当前位置:编程学习 > JAVA >>

用Java的画图实现 价格-日期 的走势图

用Java画图实现 价格-日期 的走势图(如下图),画好后生成图片格式,保存在作用域中,显示到页面上,谁有例子啊,或者提供点具体思路

追问:能发一张 上面代码的 效果图吗?
答案:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.text.DecimalFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;

import com.china.util.DateUtil;

public class Polyline {
    
    @SuppressWarnings("deprecation")
    public JFreeChart create(CategoryDataset dataset,String title,String xTitle,String yTitle){
        
        JFreeChart chart = ChartFactory.createLineChart(title, xTitle, yTitle, dataset, PlotOrientation.VERTICAL, true, true, false);
        
        chart.setTitle(new TextTitle(DateUtil.getCurrYear()+title,new Font("黑体",Font.ITALIC,20)));//重新设置图表标题,改变字体
    
        chart.getTitle().setFont(new Font("黑体", Font.BOLD, 20));
        
        chart.getLegend().setItemFont(new Font("黑体", Font.TYPE1_FONT, 13));//最底部中文乱码
        
        chart.setBackgroundPaint(Color.getColor("#EEF2FB"));//设定背景色为白色
        
          CategoryPlot plot = (CategoryPlot)chart.getPlot();
          
          plot.setBackgroundPaint(Color.white); //设定图表数据显示部分背景色
          
          plot.setDomainGridlinePaint(Color.blue); //横坐标网格线白色
          
          plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT); //数据轴的位置
          
          plot.setDomainGridlinesVisible(true); //网格线:true-->可见,false-->不可见
          
          plot.setRangeGridlinePaint(Color.blue); //纵坐标网格线白色
          
          CategoryAxis categoryAxis = plot.getDomainAxis();//取得横轴
          
          categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);//设置分类标签以45度角倾斜
           
          categoryAxis.setLabelFont(new Font("宋体",Font.CENTER_BASELINE,16));//设置横轴显示标签的字体

          categoryAxis.setTickLabelFont(new Font("宋体", Font.TYPE1_FONT, 16));     //解决横坐标乱码

          NumberAxis numberAxis = (NumberAxis)plot.getRangeAxis();//取得纵轴
          
          numberAxis.setLabelFont(new Font("宋体",Font.TYPE1_FONT,16));//设置纵轴显示标签的字体
          
          numberAxis.setTickLabelFont(new Font("宋体", Font.TYPE1_FONT, 13));     //解决纵坐标乱码
          
          numberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//使纵坐标的最小单位格为整数
          
          numberAxis.setAutoRangeIncludesZero(false);
          
          //获得renderer 注意这里是下面造型到lineandshaperenderer!!
          LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)plot.getRenderer();
          
          lineandshaperenderer.setShapesVisible(true); //series 点(即数据点)可见
          lineandshaperenderer.setShapesFilled(true); // 数据点被填充即不是空心点

         lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F,  new float[] {10F, 6F}, 0.0F)); //定义series为”First”的(即series1)点之间的连线 ,这里是虚线,默认是直线
         lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F,new float[] {6F, 6F}, 0.0F)); //定义series为”Second”的(即series2)点之间的连线
         lineandshaperenderer.setSeriesStroke(2, new BasicStroke(2.0F, 1, 1, 1.0F,new float[] {2.0F, 6F}, 0.0F)); //定义series为”Third”的(即series3)点之间的连线

         //jfreechart折线点显示值
         DecimalFormat decimalformat1 = new DecimalFormat("##0.00");//数据点显示数据值的格式
         lineandshaperenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", decimalformat1));
         lineandshaperenderer.setItemLabelsVisible(true);//设置项标签显示
         lineandshaperenderer.setBaseItemLabelsVisible(true);//基本项标签显示
                   //上面这几句就决定了数据点按照设定的格式显示数据值  
         return chart;
    }
}

调 用
 polyline.create(dataset, "月销售额数据分析表","如所选产年没有显示,即没有数据","金额(元)");

像这种图形话的东西 建议使用jfreechart 里面自带的

:G-Y完全正确

用java操作报表,想要源码我有,但是效果图不是这个,只是个例子,像要你那样的效果,自己改一下就行了

使用eclipse的birt插件,可以选用曲线图实现此效果

如果你不是实时显示的话,可以使用jQuery框架,只要将数据交给jQuery,他会自动生成曲线,很简单的,没必要用java,那样的的话很相对复杂些,可以有不同的风格让你选择。使用java的话在页面上的效果远不如jQuery的特效

上一个:这个java小程序怎么运行不了,该怎么改?
下一个:求:康佳6670JAVA用的是什么操作平台

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,