jreechart - (5)TimeSeriesChart时序图

来源:互联网 发布:南京聚铭网络怎么样 编辑:程序博客网 时间:2024/04/30 02:52
生成时序图: 
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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 单侧耳朵嗡嗡响怎么办 蚊子钻到耳朵里怎么办 小飞虫进耳朵里怎么办 耳朵里飞进去虫怎么办 耳朵里进虫子了怎么办 耳朵进虫子了怎么办啊 耳朵里进了蚊子怎么办 有虫子爬进耳朵怎么办 虫子死在耳朵里怎么办 早上起床口苦口臭怎么办 耳朵被耳屎堵了怎么办 油耳朵被堵住了怎么办 棉签掏耳朵堵了怎么办 耳朵被气堵住了怎么办 掏耳朵发炎了疼怎么办 掏耳朵掏深了疼怎么办 耳朵里进了虫子怎么办? 耳朵里飞进小虫怎么办 一只耳朵听力差怎么办 62岁耳朵有点聋怎么办 一支耳朵有点聋怎么办 80岁老人耳朵聋怎么办 被nlp课程洗脑了怎么办 手上张了个鸡眼怎么办 手上长了个鸡眼怎么办 6岁儿童手指脱皮怎么办 手指骨折后关节僵硬怎么办 手指外伤后关节肿大僵硬怎么办 胳膊骨折了手肿怎么办 耳朵被肘了耳鸣怎么办 耳朵鼓膜外显的怎么办 耳膜破了怎么办为好 耳朵的鼓膜破了怎么办 被打耳鼓膜穿孔怎么办 两只耳朵嗡嗡响怎么办 耳朵长了个脓包怎么办 胸一个大一个小怎么办 把耳朵掏出血了怎么办 掏耳朵戳出血了怎么办 耳朵戳伤流血了怎么办 耳朵挖破出血了怎么办