1. 程式人生 > >JFreeChart學習(一)-JfreeChart中的timeSeries(時序圖)使用示例

JFreeChart學習(一)-JfreeChart中的timeSeries(時序圖)使用示例

轉自:http://www.open-open.com/lib/view/open1400202235004.html

生成時序圖:

       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 物件。

//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 的使用方式。

//例項化: 
TimeSeriesCollection dataset=new TimeSeriesCollection(); 
//新增資料操作: 
dataset. addSeries(TimeSeries); // 後面講解 TimeSeries 物件 
//刪除資料操作: 
dataset. removeSeries(int index); 
//查詢資料操作 : 
dataset. getSeries(int series); 

TimeSeries 物件操作

//例項化: 
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…… 等,不再詳述

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();
	}

}

效果圖

b4ca9674-ece2-348f-8f63-87dbd7bde9a9.png

相關推薦

JFreeChart學習()-JfreeCharttimeSeries(時序)使用示例

轉自:http://www.open-open.com/lib/view/open1400202235004.html 生成時序圖: JFreeChart chart = ChartFactory.createTimeSeriesChart(

學習UML(3)-時序

1、時序圖簡介 時序圖(Sequence Diagram),又名序列圖、循序圖,是物件之間互動的UML互動圖,這些物件是按時間順序排列的。時序圖中建模元素主要有:角色(Actor)、物件(Object)、生命線(Lifeline)、控制焦點(Focus of c

【IDEA】如何在IDEA IntelliJ時序UML Sequence

一、安裝PlantUML外掛 1.1、在IDEA中點選【Settings…】 1.2、安裝PlantUML外掛 在【Plugins】搜尋PlantUML integration外掛,點選綠色的Install安裝(我這裡是安裝好了的) 二、新建時序

d3.js學習筆記(三) 餅示例

d3.testPies = function () { originalData = [30, 10, 43, 55, 13]; width = 1200; height = 200; radius = 240;

時序示例

歡迎使用Markdown編輯器寫部落格 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴充套件Markdown簡潔的語法 程式碼塊高亮 圖片連結和圖片上傳 LaTex數學公式 UML序列

d3.js學習筆記(三) 餅示例

d3.testPies = function () { originalData = [30, 10, 43, 55, 13]; width = 1200; height = 200; radius = 2

jFreeChart學習筆記()——報表demo示例

第一步:         新建一個Dynamic Web Project工程 第二步:         匯入jar包 第三步:web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app x

JFreeChart(八)之時序

轉載自  JFreeChart時序圖 時序圖表顯示的資料點在相等的時間間隔序列變化。本章演示瞭如何從一個給定的業務資料使用JFreeChart,建立時序圖。 業務資料 讓我們考慮通過使用標準 Java API 的 Math.random()產生的各種隨機數。我們使用這

JFreeChart(使用):生成折線

一、介紹 JFreeChart是JAVA平臺上的一個開放的圖表繪製類庫。它完全使用JAVA語言編寫,是為applications, applets, servlets 以及JSP等使用所設計。JFreeChart可生成餅圖(pie charts)、柱狀圖(bar chart

通過JfreeChart畫柱狀時序、K線

 import java.awt.Color; import java.awt.Paint; import java.io.*; import java.text.SimpleDateFormat; import org.jfree.data.*; import

[python學習] 簡單爬取圖片站點圖片

ctu while 要去 文章 ava ges file cor nal 近期老師讓學習Python與維基百科相關的知識,無聊之中用Python簡單做了個爬取“遊訊網圖庫”中的圖片,由於每次點擊下一張感覺很浪費時間又繁瑣。主要分享的是怎樣爬取HTML

ArcGIS API for JavaScript3.x 學習筆記[3] 加載底)【天地圖(經緯度版)】

矢量地圖 說明 tiled spa 過程 相同 服務器列表 text 服務 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5

canvas學習):線條,像變換和狀態保存

itl height tar 默認 class limit 方法 星空 stop canvas學習(一):線條,圖像變換和狀態保存 一:繪制一條線段: var canvas = document.getElementById(‘canvas‘) var ctx = can

Expo大作戰(十)--expo的預加載和緩存資產(Preloading & Caching Assets),expo標 (Icon)

version 你知道 guide 不支持 phone des war 研究 名稱 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網

14、《每天5分鐘玩轉Docker容器技術》學習--了解docker網絡

hostman cloudman cloud openstack docker 14、《每天5分鐘玩轉Docker容器技術》學習--一張圖了解docker網絡

如何周內學會編程?實戰項目總結經驗[]

ESS 使用 價值 很好 例題 替換字符串 學習php 項目 很多 如何一周內學會編程?實戰項目中總結經驗[圖]:我知道有很多草根肯定都是日常有很多各種各樣,自己認為非常有價值的想法,但是,苦於自己沒有技術,無法實現自己的需求,典型的屬於“就差一個程序員”系列。花錢找程序員

BCode解碼練習 bittorrent 學習() 種子檔案分析與bitmap點陣

在學習BT協議中的一個小練習 參考了 https://github.com/airtrack/bitwave 具體B編碼解釋 可以自行搜尋或者參考 這篇文章  bittorrent 學習(一) 種子檔案分析與bitmap點陣圖 程式碼 1 #pragma

TensorFlow的計算學習

簡介:         官網上對TensorFlow的介紹是: 一個使用資料流圖(data flow graphs)技術來進行數值計算的開源軟體庫     (有點類似於這樣 :)     

介紹《First Head Java》提到的學習方法

  這兩天因為工作需要,要了解Java方面的知識。很久以前學過一點Java的知識,但一直沒有使用,所以真的是把Java扔到爪哇國了。找了一本名為《First Head Java》的書來翻,書中“Intro”部分關於學習方法的內容吸引了我,感覺挺有意思的,所以摘錄於此,大家共享之。  為了保證內容的原汁原味,就

Java程式設計思想學習()----物件導論多型的理解

1.1抽象過程 1)萬物皆物件。 2)程式是物件的集合,他們通過傳送訊息來告知彼此所要求做的。 3)每個物件都有自己的由其他物件所構成的儲存。 4)每個物件都擁有其型別。 5)某一特定型別的所有物件都可以接收同樣的訊息。 上面是書上總結的內容,具體程式碼如下: //每個物件都有一個介面,介