首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告

Welcome to Lin's Space !

Just enjoy yourself .

Contact me:

jerry585@gmail.com


我的分类(专题)

日志更新

最新评论

留言板

我的相册

链接

Blog信息
blog名称:Lin's Space
日志总数:20
评论数量:99
留言数量:0
访问次数:240481
建立时间:2007年5月15日




[java]jfreechart时间序列图产生流程
软件技术

Great Void 发表于 2007/6/17 21:30:40

时间序列图    时间序列图和折线图很相似,不同的是它在 domain轴的数据是时间而不是数字。 时间序列图的dataset 是    XYDataset 接口,具体实现类是TimeSeriesCollection ,和上面类似,有TimeSeries 对象,它被添加入    TimeSeriesCollection 。                                                                                1、创建一个数据源(dataset):    private static XYDataset createDataset()    {        TimeSeries timeseries = new TimeSeries("L&G European Index Trust",Month.class);        timeseries.add(new Month(2, 2001), 181.8D);//这里用的是Month.class,同样还有Day.class Year.class 等等        timeseries.add(new Month(3, 2001), 167.3D);        timeseries.add(new Month(4, 2001), 153.8D);        timeseries.add(new Month(5, 2001), 167.6D);        timeseries.add(new Month(6, 2001), 158.8D);        timeseries.add(new Month(7, 2001), 148.3D);        timeseries.add(new Month(8, 2001), 153.9D);        timeseries.add(new Month(9, 2001), 142.7D);        timeseries.add(new Month(10, 2001), 123.2D);        timeseries.add(new Month(11, 2001), 131.8D);        timeseries.add(new Month(12, 2001), 139.6D);        timeseries.add(new Month(1, 2002), 142.9D);        timeseries.add(new Month(2, 2002), 138.7D);        timeseries.add(new Month(3, 2002), 137.3D);        timeseries.add(new Month(4, 2002), 143.9D);        timeseries.add(new Month(5, 2002), 139.8D);        timeseries.add(new Month(6, 2002), 137D);        timeseries.add(new Month(7, 2002), 132.8D);               TimeSeries timeseries1 = new TimeSeries("L&G UK Index Trust",Month.class);        timeseries1.add(new Month(2, 2001), 129.6D);        timeseries1.add(new Month(3, 2001), 123.2D);        timeseries1.add(new Month(4, 2001), 117.2D);        timeseries1.add(new Month(5, 2001), 124.1D);        timeseries1.add(new Month(6, 2001), 122.6D);        timeseries1.add(new Month(7, 2001), 119.2D);        timeseries1.add(new Month(8, 2001), 116.5D);        timeseries1.add(new Month(9, 2001), 112.7D);        timeseries1.add(new Month(10, 2001), 101.5D);        timeseries1.add(new Month(11, 2001), 106.1D);        timeseries1.add(new Month(12, 2001), 110.3D);        timeseries1.add(new Month(1, 2002), 111.7D);        timeseries1.add(new Month(2, 2002), 111D);        timeseries1.add(new Month(3, 2002), 109.6D);        timeseries1.add(new Month(4, 2002), 113.2D);        timeseries1.add(new Month(5, 2002), 111.6D);        timeseries1.add(new Month(6, 2002), 108.8D);        timeseries1.add(new Month(7, 2002), 101.6D);        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();        timeseriescollection.addSeries(timeseries);        timeseriescollection.addSeries(timeseries1);        timeseriescollection.setDomainIsPointsInTime(true); //domain轴上的刻度点代表的是时间点而不是时间段        return timeseriescollection;    }   2、由ChartFactory  产生 JFreeChart 对象    private static JFreeChart createChart(XYDataset xydataset)    {        JFreeChart jfreechart = ChartFactory.createTimeSeriesChart("Legal & General Unit Trust Prices",                                                                   "Date",                                                                   "Price Per Unit",                                                                   xydataset,                                                                   true,                                                                   true,                                                                   false);        jfreechart.setBackgroundPaint(Color.white);        XYPlot xyplot = (XYPlot)jfreechart.getPlot(); //获得 plot : XYPlot!!        xyplot.setBackgroundPaint(Color.lightGray);        xyplot.setDomainGridlinePaint(Color.white);        xyplot.setRangeGridlinePaint(Color.white);        xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));        xyplot.setDomainCrosshairVisible(true);        xyplot.setRangeCrosshairVisible(true);        org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = xyplot.getRenderer();        if(xyitemrenderer instanceof XYLineAndShapeRenderer)        {            XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyitemrenderer;            xylineandshaperenderer.setDefaultShapesVisible(true); //数据点可见            xylineandshaperenderer.setDefaultShapesFilled(true);  //数据点是实心点        }        DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis(); //对domain 轴上日期显示格式定义        dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));        return jfreechart;    }        一些重要的方法:     A、增加标记线:        xyplot.addRangeMarker(new ValueMarker(550D)); //数值轴        Quarter quarter = new Quarter(2, 2002);        xyplot.addDomainMarker(new ValueMarker(quarter.getMiddleMillisecond()));  //时间轴     B、数据点的调整        XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)xyplot.getRenderer();        xylineandshaperenderer.setDefaultShapesVisible(true);  //数据点可见        xylineandshaperenderer.setSeriesFillPaint(0, Color.red);  //数据点填充为红色        xylineandshaperenderer.setSeriesFillPaint(1, Color.white);  //数据点填充为白色        xylineandshaperenderer.setUseFillPaint(true);    //应用     C、平均值曲线       这个曲线有什么用呢?很简单的例子,这里有一个以半年每天为单位的数据绘制的曲线,我们想看看以月为单位数据       的变化,这时就可以用到它了。        TimeSeries timeseries = createEURTimeSeries();  //就是以半年每天为单位的数据        TimeSeries timeseries1 = MovingAverage.createMovingAverage(timeseries,                                                                   "30 day moving average",                                                                   30, //30天为一个周期                                                                   30); //最开始的30天跳过        TimeSeriesCollection timeseriescollection = new TimeSeriesCollection();        timeseriescollection.addSeries(timeseries);        timeseriescollection.addSeries(timeseries1);        return timeseriescollection;


阅读全文(3854) | 回复(1) | 编辑 | 精华
 


回复:jfreechart时间序列图产生流程
软件技术

wwwaaa(游客)发表评论于2008/8/4 11:37:54

答案还不错


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.030 second(s), page refreshed 144754967 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号