jreechart - (5)TimeSeriesChart时序图

生成时序图: 
Java代码  收藏代码 

   1. JFreeChart chart = ChartFactory.createTimeSeriesChart(   
   2.        String title,    // 图标题   
   3.           String timeAxisLabel,   //x 轴标题   
   4.           String valueAxisLabel,  //y 轴标题   
   5.           XYDataset dataset,       // 数据源   
   6.           boolean legend,          // 是否显示图例   
   7.           boolean tooltips,        // 是否显示 tooltip   
   8.           boolean urls);           // 是否指定 url   

       JFreeChart chart = ChartFactory.createTimeSeriesChart( 
              String title,    // 图标题 
                 String timeAxisLabel,   //x 轴标题 
                 String valueAxisLabel,  //y 轴标题 
                 XYDataset dataset,       // 数据源 
                 boolean legend,          // 是否显示图例 
                 boolean tooltips,        // 是否显示 tooltip 
                 boolean urls);           // 是否指定 url 



时序图的 Plot 对象是 XYPlot 类型。 XYPlot 对象的 x 轴是 DateAxis 对象, y 轴是 NumberAxis 对象,绘制单元是 XYLineAndShapeRenderer 对象,数据源是 XYDataset 对象。 
Java代码  收藏代码 

   1. //Plot 对象的获取操作:   
   2. XYPlot plot = (XYPlot) chart.getPlot();   
   3. //X 轴对象的获取操作:   
   4. DateAxis xAxis = (DateAxis) plot.getDomainAxis();   
   5. //Y 轴对象的获取操作:   
   6. NumberAxis yAxis =(NumberAxis) plot.getRangeAxis();   
   7. //Renderer 对象的获取操作:   
   8. XYItemRenderer renderer= plot.getRenderer();   

//Plot 对象的获取操作: 
XYPlot plot = (XYPlot) chart.getPlot(); 
//X 轴对象的获取操作: 
DateAxis xAxis = (DateAxis) plot.getDomainAxis(); 
//Y 轴对象的获取操作: 
NumberAxis yAxis =(NumberAxis) plot.getRangeAxis(); 
//Renderer 对象的获取操作: 
XYItemRenderer renderer= plot.getRenderer(); 





时序图可以接受一切 XYDataset 类型的数据源,下面讲解一下常用的 XYDataset 类型 TimeSeriesCollection 的使用方式。 
Java代码  收藏代码 

   1. //实例化:   
   2. TimeSeriesCollection dataset=new TimeSeriesCollection();   
   3. //添加数据操作:   
   4. dataset. addSeries(TimeSeries); // 后面讲解 TimeSeries 对象   
   5. //删除数据操作:   
   6. dataset. removeSeries(int index);   
   7. //查询数据操作 :   
   8. dataset. getSeries(int series);   

//实例化: 
TimeSeriesCollection dataset=new TimeSeriesCollection(); 
//添加数据操作: 
dataset. addSeries(TimeSeries); // 后面讲解 TimeSeries 对象 
//删除数据操作: 
dataset. removeSeries(int index); 
//查询数据操作 : 
dataset. getSeries(int series); 





TimeSeries 对象操作 
Java代码  收藏代码 

   1. //实例化:   
   2. TimeSeries ts=TimeSeries(String name, Class timePeriodClass);   
   3. //增加数据操作:   
   4. ts. add(RegularTimePeriod period, double value);    
   5. //删除数据操作:   
   6. ts. delete(RegularTimePeriod period);      
   7. //修改数据操作:   
   8. ts. update(RegularTimePeriod period, Number value);   
   9. //查询数据操作:   
  10. ts. getValue(RegularTimePeriod period);   

//实例化: 
TimeSeries ts=TimeSeries(String name, Class timePeriodClass); 
//增加数据操作: 
ts. add(RegularTimePeriod period, double value);  
//删除数据操作: 
ts. delete(RegularTimePeriod period);    
//修改数据操作: 
ts. update(RegularTimePeriod period, Number value); 
//查询数据操作: 
ts. getValue(RegularTimePeriod period); 



类 RegularTimePeriod 是 JFreeChart 提供的时间模板类,它有很多具体的时间类,比如: Minute 、 Second 、 Hour 、 Day…… 等,不再详述 
Java代码  收藏代码 

   1. package com.px1987.jfreechart;  
   2.   
   3. import java.awt.Color;  
   4. import org.jfree.chart.ChartFactory;  
   5. import org.jfree.chart.ChartFrame;  
   6. import org.jfree.chart.JFreeChart;  
   7. import org.jfree.chart.plot.XYPlot;  
   8. import org.jfree.chart.renderer.xy.XYItemRenderer;  
   9. import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;  
  10. import org.jfree.data.time.Day;  
  11. import org.jfree.data.time.Hour;  
  12. import org.jfree.data.time.Minute;  
  13. import org.jfree.data.time.TimeSeries;  
  14. import org.jfree.data.time.TimeSeriesCollection;  
  15. import org.jfree.data.xy.XYDataset;  
  16. import org.jfree.ui.RectangleInsets;  
  17.   
  18. public class TestTimeSeriesChart {  
  19.   
  20.     private static XYDataset createDataset() {  
  21.         TimeSeriesCollection dataset = new TimeSeriesCollection();  
  22.         Day day = new Day(21, 9, 2008);  
  23.         Hour hour22 = new Hour(22, day);  
  24.         Hour hour23 = new Hour(23, day);  
  25.   
  26.         TimeSeries timeSeries1 = new TimeSeries("篮球火", Minute.class);  
  27.         timeSeries1.add(new Minute(25, hour23), 2.80);  
  28.         timeSeries1.add(new Minute(22, hour23), 2.59);  
  29.         timeSeries1.add(new Minute(32, hour22), 2.38);  
  30.         timeSeries1.add(new Minute(14, hour22), 2.35);  
  31.         timeSeries1.add(new Minute(18, hour23), 2.34);  
  32.         timeSeries1.add(new Minute(57, hour23), 2.31);  
  33.         timeSeries1.add(new Minute(14, hour23), 2.28);  
  34.         timeSeries1.add(new Minute(23, hour22), 2.25);  
  35.         timeSeries1.add(new Minute(46, hour22), 2.16);  
  36.         timeSeries1.add(new Minute(40, hour22), 2.16);  
  37.         timeSeries1.add(new Minute(6, hour22), 1.95);  
  38.         timeSeries1.add(new Minute(51, hour22), 1.93);  
  39.         timeSeries1.add(new Minute(2, hour23), 1.86);  
  40.         timeSeries1.add(new Minute(6, hour23), 1.84);  
  41.         timeSeries1.add(new Minute(9, hour23), 1.79);  
  42.         timeSeries1.add(new Minute(29, hour23), 1.72);  
  43.   
  44.         TimeSeries timeSeries2 = new TimeSeries("无敌珊宝妹", Minute.class);  
  45.         timeSeries2.add(new Minute(36, hour22), 3.63);  
  46.         timeSeries2.add(new Minute(55, hour22), 3.63);  
  47.         timeSeries2.add(new Minute(21, hour23), 3.36);  
  48.         timeSeries2.add(new Minute(30, hour22), 3.28);  
  49.         timeSeries2.add(new Minute(33, hour23), 3.18);  
  50.         timeSeries2.add(new Minute(6, hour23), 3.13);  
  51.         timeSeries2.add(new Minute(13, hour22), 3.05);  
  52.         timeSeries2.add(new Minute(0, hour23), 2.98);  
  53.         timeSeries2.add(new Minute(40, hour22), 2.98);  
  54.         timeSeries2.add(new Minute(48, hour22), 2.91);  
  55.         timeSeries2.add(new Minute(14, hour23), 2.73);  
  56.         timeSeries2.add(new Minute(27, hour23), 2.59);  
  57.         timeSeries2.add(new Minute(38, hour23), 2.37);  
  58.   
  59.         TimeSeries timeSeries3 = new TimeSeries("不良笑花", Minute.class);  
  60.         timeSeries3.add(new Minute(8, hour23), 2.84);  
  61.         timeSeries3.add(new Minute(29, hour22), 2.51);  
  62.         timeSeries3.add(new Minute(56, hour22), 2.23);  
  63.         timeSeries3.add(new Minute(5, hour23), 2.17);  
  64.         timeSeries3.add(new Minute(47, hour22), 2.10);  
  65.         timeSeries3.add(new Minute(17, hour22), 1.86);  
  66.         timeSeries3.add(new Minute(24, hour23), 1.84);  
  67.         timeSeries3.add(new Minute(5, hour22), 1.84);  
  68.         timeSeries3.add(new Minute(15, hour23), 1.73);  
  69.         timeSeries3.add(new Minute(36, hour22), 1.46);  
  70.   
  71.         dataset.addSeries(timeSeries1);  
  72.         dataset.addSeries(timeSeries2);  
  73.         dataset.addSeries(timeSeries3);  
  74.         return dataset;  
  75.     }  
  76.   
  77.     public static void createTimeSeriesChart() {  
  78.         JFreeChart timeSeriesChart = ChartFactory.createTimeSeriesChart(  
  79.                 "台湾偶像剧收视率(2008-9-21)", "播放时间", "收视率百分点", createDataset(), true,  
  80.                 true, false);  
  81.         timeSeriesChart.setBackgroundPaint(Color.YELLOW);  
  82.         XYPlot plot = timeSeriesChart.getXYPlot();  
  83.         setXYPolt(plot);  
  84.   
  85.         ChartFrame frame = new ChartFrame("TestPieChart", timeSeriesChart);  
  86.         frame.pack();  
  87.         frame.setVisible(true);  
  88.     }  
  89.   
  90.     public static void setXYPolt(XYPlot plot) {  
  91.         plot.setDomainGridlinePaint(Color.LIGHT_GRAY);  
  92.         plot.setRangeGridlinePaint(Color.LIGHT_GRAY);  
  93.         // plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));  
  94.         XYItemRenderer r = plot.getRenderer();  
  95.         if (r instanceof XYLineAndShapeRenderer) {  
  96.             XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;  
  97.             renderer.setBaseShapesVisible(true);  
  98.             renderer.setBaseShapesFilled(false);  
  99.         }  
100.     }  
101.   
102.     public static void main(String[] args) {  
103.         createTimeSeriesChart();  
104.     }  
105.   
106. }  

package com.px1987.jfreechart; 

import java.awt.Color; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartFrame; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.renderer.xy.XYItemRenderer; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; 
import org.jfree.data.time.Day; 
import org.jfree.data.time.Hour; 
import org.jfree.data.time.Minute; 
import org.jfree.data.time.TimeSeries; 
import org.jfree.data.time.TimeSeriesCollection; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.ui.RectangleInsets; 

public class TestTimeSeriesChart { 

private static XYDataset createDataset() { 
TimeSeriesCollection dataset = new TimeSeriesCollection(); 
Day day = new Day(21, 9, 2008); 
Hour hour22 = new Hour(22, day); 
Hour hour23 = new Hour(23, day); 

TimeSeries timeSeries1 = new TimeSeries("篮球火", Minute.class); 
timeSeries1.add(new Minute(25, hour23), 2.80); 
timeSeries1.add(new Minute(22, hour23), 2.59); 
timeSeries1.add(new Minute(32, hour22), 2.38); 
timeSeries1.add(new Minute(14, hour22), 2.35); 
timeSeries1.add(new Minute(18, hour23), 2.34); 
timeSeries1.add(new Minute(57, hour23), 2.31); 
timeSeries1.add(new Minute(14, hour23), 2.28); 
timeSeries1.add(new Minute(23, hour22), 2.25); 
timeSeries1.add(new Minute(46, hour22), 2.16); 
timeSeries1.add(new Minute(40, hour22), 2.16); 
timeSeries1.add(new Minute(6, hour22), 1.95); 
timeSeries1.add(new Minute(51, hour22), 1.93); 
timeSeries1.add(new Minute(2, hour23), 1.86); 
timeSeries1.add(new Minute(6, hour23), 1.84); 
timeSeries1.add(new Minute(9, hour23), 1.79); 
timeSeries1.add(new Minute(29, hour23), 1.72); 

TimeSeries timeSeries2 = new TimeSeries("无敌珊宝妹", Minute.class); 
timeSeries2.add(new Minute(36, hour22), 3.63); 
timeSeries2.add(new Minute(55, hour22), 3.63); 
timeSeries2.add(new Minute(21, hour23), 3.36); 
timeSeries2.add(new Minute(30, hour22), 3.28); 
timeSeries2.add(new Minute(33, hour23), 3.18); 
timeSeries2.add(new Minute(6, hour23), 3.13); 
timeSeries2.add(new Minute(13, hour22), 3.05); 
timeSeries2.add(new Minute(0, hour23), 2.98); 
timeSeries2.add(new Minute(40, hour22), 2.98); 
timeSeries2.add(new Minute(48, hour22), 2.91); 
timeSeries2.add(new Minute(14, hour23), 2.73); 
timeSeries2.add(new Minute(27, hour23), 2.59); 
timeSeries2.add(new Minute(38, hour23), 2.37); 

TimeSeries timeSeries3 = new TimeSeries("不良笑花", Minute.class); 
timeSeries3.add(new Minute(8, hour23), 2.84); 
timeSeries3.add(new Minute(29, hour22), 2.51); 
timeSeries3.add(new Minute(56, hour22), 2.23); 
timeSeries3.add(new Minute(5, hour23), 2.17); 
timeSeries3.add(new Minute(47, hour22), 2.10); 
timeSeries3.add(new Minute(17, hour22), 1.86); 
timeSeries3.add(new Minute(24, hour23), 1.84); 
timeSeries3.add(new Minute(5, hour22), 1.84); 
timeSeries3.add(new Minute(15, hour23), 1.73); 
timeSeries3.add(new Minute(36, hour22), 1.46); 

dataset.addSeries(timeSeries1); 
dataset.addSeries(timeSeries2); 
dataset.addSeries(timeSeries3); 
return dataset; 


public static void createTimeSeriesChart() { 
JFreeChart timeSeriesChart = ChartFactory.createTimeSeriesChart( 
"台湾偶像剧收视率(2008-9-21)", "播放时间", "收视率百分点", createDataset(), true, 
true, false); 
timeSeriesChart.setBackgroundPaint(Color.YELLOW); 
XYPlot plot = timeSeriesChart.getXYPlot(); 
setXYPolt(plot); 

ChartFrame frame = new ChartFrame("TestPieChart", timeSeriesChart); 
frame.pack(); 
frame.setVisible(true); 


public static void setXYPolt(XYPlot plot) { 
plot.setDomainGridlinePaint(Color.LIGHT_GRAY); 
plot.setRangeGridlinePaint(Color.LIGHT_GRAY); 
// plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0)); 
XYItemRenderer r = plot.getRenderer(); 
if (r instanceof XYLineAndShapeRenderer) { 
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r; 
renderer.setBaseShapesVisible(true); 
renderer.setBaseShapesFilled(false); 



public static void main(String[] args) { 
createTimeSeriesChart(); 




效果图 


文章来源: 
http://sktoo.iteye.com/blog/249123
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值