最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java繪圖庫JFreeChart的使用教程

 更新時間:2023年09月21日 10:55:01   作者:QQVQQ...  
圖表是一種以簡單方式顯示信息的圖形,JFreeChart允許創(chuàng)建各種交互式和非交互式圖表,本文主要介紹了Java繪圖庫JFreeChart的使用教程,感興趣的可以了解一下

前言

圖表是一種以簡單方式顯示信息的圖形,通常使用直線和曲線來顯示金額。 JJFreeChart 由 David Gilbert 于 2000 年創(chuàng)立。如今,JFreeChart 是 Java 開發(fā)人員中使用最廣泛的圖表庫。

JFreeChart 允許創(chuàng)建各種交互式和非交互式圖表;可以廣泛地定制; 它允許修改圖表項目的顏色和繪制,圖例,線條或標記的樣式。 它會自動繪制軸刻度和圖例。可以創(chuàng)建折線圖,條形圖,面積圖,散點圖,餅圖,甘特圖和各種專用圖,例如風向圖或氣泡圖。它支持多種輸出格式,包括 PNG,JPEG,PDF 和 SVG。

相關jar包:JFreeChart繪圖包

類級結構構解釋了庫中的各種類如何相互交互以創(chuàng)建各種類型的圖表。下圖為JFreeChart的類級結構:

Units Description
File具有用戶輸入的源,用于在文件中創(chuàng)建數據集。
Database具有用戶輸入的源,用于在數據庫中創(chuàng)建數據集。
Create Dataset接受數據集并將數據集存儲到數據集對象中。
General Dataset這種類型的數據集主要用于餅圖。
Category Dataset此類數據集用于條形圖、折線圖等。
Series Dataset這種類型的數據集用于存儲一系列數據和構建折線圖。
Series Collection Dataset將不同類別的系列數據集添加到系列集合數據集中。這種類型的數據集用于 XY 線圖。
Create Chart這是為創(chuàng)建最終圖表而執(zhí)行的方法。
Frame/Image該圖顯示在一個Swing框架或創(chuàng)建映像。

一、快速繪圖教程

1. 折線圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class Example {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(15, "schools", "1970");
		dataset.addValue(30, "schools", "1980");
		dataset.addValue(60, "schools", "1990");
		dataset.addValue(120, "schools", "2000");
		dataset.addValue(240, "schools", "2010");
		dataset.addValue(300, "schools", "2020");
		dataset.addValue(320, "schools", "2022");
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createLineChart(
				"Example", // 圖標題
				"Year", // x軸標題
				"Schools Count", // y軸標題
				dataset, //數據集
				PlotOrientation.VERTICAL, //圖表方向
				false, true, false);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

2. 條形圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class Example {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(1.0, "A", "Ⅰ");
		dataset.addValue(3.0, "A", "Ⅱ");
		dataset.addValue(5.0, "A", "Ⅲ");
		dataset.addValue(5.0, "A", "Ⅳ");
		dataset.addValue(5.0, "B", "Ⅰ");
		dataset.addValue(6.0, "B", "Ⅱ");
		dataset.addValue(10.0, "B", "Ⅲ");
		dataset.addValue(4.0, "B", "Ⅳ");
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createBarChart(
				"Example", // 圖標題
				"Category",            
		         "Score",            
		         dataset,          
		         PlotOrientation.VERTICAL,           
		         true, true, false);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class Example {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(1.0, "A", "Ⅰ");
		dataset.addValue(3.0, "A", "Ⅱ");
		dataset.addValue(5.0, "A", "Ⅲ");
		dataset.addValue(5.0, "A", "Ⅳ");
		dataset.addValue(5.0, "B", "Ⅰ");
		dataset.addValue(6.0, "B", "Ⅱ");
		dataset.addValue(10.0, "B", "Ⅲ");
		dataset.addValue(4.0, "B", "Ⅳ");
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createBarChart3D(
				"Example", // 圖標題
				"Category", 
				"Score", 
				dataset, 
				PlotOrientation.VERTICAL, 
				true, true, false);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

3. 餅狀圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class Example {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("A", 20);
		dataset.setValue("B", 10);
		dataset.setValue("C", 40);
		dataset.setValue("D", 30);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createPieChart(
				"Example", // 圖標題
				dataset, // 數據集
				false, true, true);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
public class Example {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("A", 20);
		dataset.setValue("B", 10);
		dataset.setValue("C", 40);
		dataset.setValue("D", 30);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createPieChart3D(
				"Example", // 圖標題
				dataset, // 數據集
				false, true, true);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

4. XY圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Example {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		XYSeries data = new XYSeries("InternetExplorer");
		data.add(1.0, 1.0);
		data.add(2.0, 2.0);
		data.add(3.0, 3.0);
		data.add(4.0, 2.0);
		data.add(5.0, 1.0);
		data.add(6.0, 2.0);
		data.add(6.0, 3.0);
		data.add(7.0, 2.0);
		data.add(8.0, 1.0);
		data.add(9.0, 2.0);
		XYSeriesCollection dataset = new XYSeriesCollection();
		dataset.addSeries(data);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createXYLineChart(
				"Example", 
				"X", 
				"Y", 
				dataset, 
				PlotOrientation.VERTICAL, 
				false,true, false);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

5. 散點圖

package plot;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Example {
	public static void main(String[] args) throws IOException {
		// 添加數據
		XYSeriesCollection dataset = new XYSeriesCollection();
		XYSeries series1 = new XYSeries("Series1");
		for (int i = 0; i < 100; i++) {
			series1.add(Math.random()*100, Math.random()*100);
		}
		dataset.addSeries(series1);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createScatterPlot(
		        "Example", 
		        "X-Axis", "Y-Axis", dataset);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

6. 氣泡圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.DefaultXYZDataset;
public class ShowExample {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		DefaultXYZDataset dataset = new DefaultXYZDataset();
		double x[] = { 30, 40, 50, 60, 70, 80 };
		double y[] = { 10, 20, 30, 40, 50, 60 };
		double z[] = { 1, 2, 3, 4, 2, 1 };
		double xyz[][] = { x, y, z };
		dataset.addSeries("Series", xyz);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createBubbleChart(
		         "AGE vs WEIGHT vs WORK", 
		         "Weight", 
		         "AGE", 
		         dataset, 
		         PlotOrientation.HORIZONTAL, 
		         true, true, false);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

7. 時序圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.SeriesException;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
public class ShowExample {
	public static void main(String[] args) {
		// 創(chuàng)建數據
		TimeSeries series = new TimeSeries("Random Data");
		Second current = new Second();
		double value = 100.0;
		for (int i = 0; i < 4000; i++) {
			try {
				value = value + Math.random() - 0.5;
				series.add(current, value);
				current = (Second) current.next();
			} catch (SeriesException e) {
				System.err.println("Error adding to series");
			}
		}
		XYDataset dataset = (XYDataset) new TimeSeriesCollection(series);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createTimeSeriesChart(
				"Computing Test", 
				"Seconds", 
				"Value", 
				dataset, 
				false,false, false);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

二、常見類與方法

在本章中,我們將討論一些在JFreeChart庫重要的軟件包,類和方法。這些軟件包,類和方法是最常見的,同時建立了各種使用JFreeChart庫圖表。

1. ChartFactory 類

ChartFactory是org.jfree.chart包中抽象類。它提供了實用方法的集合,用于生成標準的圖表。以下是幾個重要方法的列表:

類構造方法

方法描述
ChartFactory() ChartFactory類的默認構造函數。

類方法

S.N.方法 & 描述
1createPieChart(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls) 此方法使用默認設置創(chuàng)建一個餅圖。它返回JFreeChart類型的對象。
2createPieChart3D(java.lang.String title, PieDataset dataset, boolean legend, boolean tooltips, boolean urls) 此方法使用指定的數據集三維/3D餅圖。
3createBarChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) 參數java.lang.String categoryAxisLabel標簽放置在X軸的值。該參數的java.lang.String valueAxisLabel標簽放置在Y軸的數值。此方法創(chuàng)建一個條形圖。
4createBarChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) 此方法創(chuàng)建一個柱形圖具有3D效果。它返回JFreeChart類型的對象。
5createLineChart(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls)

此方法使用默認設置創(chuàng)建一個折線圖。

6createLineChart3D(java.lang.String title, java.lang.String categoryAxisLabel, java.lang.String valueAxisLabel, CategoryDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) 此方法創(chuàng)建一個折線圖與3D效果。
7createXYLineChart(java.lang.String title, java.lang.String xAxisLabel, java.lang.String yAxisLabel, XYDataset dataset, PlotOrientation orientation, boolean legend, boolean tooltips, boolean urls) 此方法使用默認設置創(chuàng)建基于XYDataset的折線圖。

2. ChartFrame 類

ChartFrame類在org.jfree.chart包中,提供所有的幀相關的功能和工具。 ChartFrame類繼承自父類,如Frame, Window, Container, Component 類功能。

類構造方法

S.N.構造方法及描述
1ChartFrame (java.lang.Frame String, JfreeChart chart) 它構建一個框架/frame。
2Chart Frame (java.lang.Frame String, JfreeChart chart, boolean scrollpane) 它構建一個框架/frame。

類方法

S.N.構造方法及描述
1getChartPanel() 此方法返回圖表面板的框架/frame。

3. ChartPanel 類

org.jfree.chart包中的ChartPanel類用于swing GUI部件,用于顯示JfreeChart對象。

類構造方法

S.N.構造方法及描述
1ChartPanel(JFreeChart chart) 此構造一個面板/panel ,顯示指定的圖表。
2ChartPanel(JFreeChart chart, boolean useBuffer) 這個構造函數構造包含圖表的面板/panel。
3ChartPanel(JFreeChart chart, boolean properties, boolean save, boolean print, boolean zoom, boolean tooltips) 此構造一個JFreeChart面板。

類方法

S.N.方法及描述
1setPreferredSize(java.awt.Dimension) 該方法用于java.awt中設置的幀大小。 Dimension類對象作為參數。這個方法是從javax.swing.JComponent中實現。

4. ChartUtilities 類

org.jfree.chart包中的CharUtilites類提供JFreeCharts包括將圖表轉換成圖像文件格式,如PNG,JPEG和創(chuàng)建HTML圖像映射方法的實用方法的集合。

類構造函數

S.N.構造方法及描述
1ChartUtilities() 這是類的一個默認構造函數

類方法

S.N.方法及描述
1saveChartAsPNG(java.io.File file, JfreeChart chart, int width, int height) 此方法轉換和保存圖表為PNG格式指定的文件。
2saveChartAsJPEG(java.io.File file, JfreeChart chart, int width, int height) 此方法轉換并保存一個圖表,以JPEG格式指定的文件。

5. JFreeChart 類

JFreeChart 類是在org.jfree.chart包的核心類。這個類提供了JFreeChart的方法來創(chuàng)建柱狀圖,折線圖,餅圖和XY坐標圖,包括時間序列數據。

類構造函數

S.N.構造方法及描述
1JfreeChart(Plot plot) 此構造函數創(chuàng)建基于所提供的節(jié)點一個新的圖表。
2JfreeChart(java.lang.String title, java.awt.Font titleFont, Plot plot, boolean createLegend) 該構造函數創(chuàng)建一個新的圖表給定標題和繪圖。
3JfreeChart(java.lang.String title, Plot plot) 該構造函數創(chuàng)建一個新的圖表給定標題和繪圖。

類方法

S.N.方法及描述
1getXYPlot() 此方法返回節(jié)點圖表作為XYPlot。使用XYPolt我們可以XY圖表做了一些實用操作。

6. PiePlot 類

這個類是org.jfree.chart.plot包的一部分,來自同一個包擴展Plot 類。這個類提供了一些方法來創(chuàng)建餅圖塊。

類的構造函數

S.N.構造方法及描述
1PiePlot() 它創(chuàng)建了一個新的繪圖。
2PiePlot(PieDataset dataset) 它創(chuàng)建了一個繪圖,餅圖由指定的數據集。

類方法

S.N.方法及描述
1setStartAngle(double angle) 此方法設置起始角度和發(fā)送PlotChangeEvent向所有注冊的偵聽器

7. PiePlot3D 類

PiePlot3D類和PiePlot類在同一個包中的子類。因此,這兩個類有相同的功能,PiePlot類只不過是用于創(chuàng)建3D圖形。

類的構造函數

S.N.構造方法及描述
1PiePlot3D() 此構造函數創(chuàng)建沒有數據集的新實例。
2PiePlot3D(PieDataset dataset) 該構造函數創(chuàng)建一個餅圖和使用指定的數據集三維效果。

類方法

S.N.方法及描述
1setForegroundAlpha(float alpha) 它設置alpha透明度并向所有發(fā)送PlotChangeEvent注冊的偵聽器。
2setInteriorGap(double percent) 它設置了內部差距并發(fā)送PlotChangeEvent向所有注冊的偵聽器。這種控制的餅圖繪圖邊緣與繪圖區(qū)本身(即,其中部分標簽顯示的區(qū)域)之間的空間。這個方法是從父類PiePlot繼承。

8. PlotOrientation 類

這是一個串行化類從org.jfree.chart.plot封裝,它是用來顯示一個二維曲線圖的方位。方向可以是垂直的或水平的。它設置Y軸的方向。傳統(tǒng)的繪圖有一個垂直的Y軸。

字段摘要

S.N.類型字段 & 描述
1PlotOrientationHORIZONTAL 為一個曲線圖,其中所述范圍軸(Y軸)是水平。
2PlotOrientationVERTICAL 為一個曲線圖,其中所述范圍軸(Y軸)是垂直的。這個默認的方向。

類方法

S.N.方法及描述
1isHorizontal() 如果這個方向是水平的,此方法返回true,否則返回false。
2isVertical() 如果這個方向是VERTICAL,此方法返回true,否則返回false。

9. XYPlot 類

這在org.jfree.chart.plot包可用一個通用類,并將其用于在(X,Y)對的形式標繪數據。這個曲線圖可以從實現XYDataSet接口的任何其它類中使用的數據。 XYPlot利用一個XYItemRenderer的畫在圖上的每個點。

類的構造函數

S.N.構造方法及描述
1XYPlot() 該構造器沒有數據集,無軸,無渲染器創(chuàng)建一個新的XYPlot實例。
2XYPlot(XYDataset dataset,ValueAxis domainAxis,ValueAxis rangeAxis,XYItemRenderer renderer),此構造函數創(chuàng)建一個新的繪圖并指定數據集,軸和渲染。

類方法

S.N.方法及描述
1setRenderer(XYItemRenderer renderer) 此方法設置渲染器的主要數據集,并發(fā)送更改事件向所有注冊的偵聽器。

10. NumberAxis 類

這個類是org.jfree.chart.axis封裝,它可以訪問任意軸的數值數據。當我們設置任何軸的范圍為默認值,它根據所述數據的范圍配合。但使用NumberAxis,類我們可以設置較低的利潤率和定義域和值域軸的上側邊距。

類的構造函數

S.N.構造方法及描述
1NumberAxis( ) 這是NumberAxis一個默認的構造函數。
2NumberAxis( java.lang.String label) 構造函數NumberAxis使用必要的默認值在哪里。

類方法

S.N.方法及描述
1setLowerMargin(double margin) 它為軸心的利潤率較低(為軸心范圍的百分比),并發(fā)送一個AxisChangeEvent所有已注冊的偵聽器。這個方法是從父類ValueAxis繼承。
2setUpperMargin(double margin) 它設置于所述軸的上緣(視軸范圍的百分比),并發(fā)送一個AxisChangeEvent給所有注冊的監(jiān)聽器。這種方法也存在于ValueAxis類。

11. XYLineAndShapeRenderer 類

這是在org.jfree.chart.renderer.xy包下的類,它需要連接數據點與線,并繪制形狀,在每個數據點下是可用的。這個渲染器類是專為XYPlot類配合使用。

類的構造函數

S.N.構造和描述
1XYLineAndShapeRenderer() 它創(chuàng)建了一個新的渲染器有兩種線條和形狀可見。
2XYLineAndShapeRenderer (boolean lines, boolean shapes) 它創(chuàng)建了一個新的渲染與特定的屬性。

類方法

S.N.方法及描述
1setSeriesPaint(int series, java.awt.Paint paint) 此方法設置用于一系列的涂料,并發(fā)送RendererChangeEvent給所有注冊的監(jiān)聽器。這個方法是從AbstratRenderer抽象類從渲染器包中JFreeChart的API。
2setSeriesStroke(int series, java.awt.Stroke stroke) 此方法設置用于一系列的流程,并發(fā)送RendererChangeEvent向所有注冊的偵聽器。這個方法是從AbstratRenderer抽象類,它是這個包的超類。

12. XYItemRenderer通用數據集

這是用于使一個單一的(X,Y)格式項在XYPlot接口。org.Jfree.data.general包其具有類和接口,以定義不同類型的數據集來構造圖。

PieDataset

這是作為一個通用的數據集,其中值與鍵相關聯的接口。正如其名稱所暗示的,可以使用這個數據集提供數據的餅圖。此接口擴展KeyedValues數據集的接口。所有使用此接口的方法取自KeyedValues,Values和數據集的接口。

13. DefaultPieDataset 類

這是一個默認的實現類PieDataset接口。

類的構造函數

S.N.構造函數和描述
1DefaultPieDataset() 該構造函數創(chuàng)建一個新的數據集,初始為空。
2DefaultPieDataset(KeyedValues data) 它從一個KeyedValues實例復制數據創(chuàng)建了一個新的數據集。

類方法

S.N.方法及描述
1setValue(java.lang.Comparable key, double value) 它設置數據值的鍵,發(fā)送DatasetChangeEvent向所有注冊的偵聽器。
2setValue(java.lang.Comparable key, java.lang.Number value) 它設置數據值的鍵,發(fā)送DatasetChangeEvent向所有注冊的偵聽器。

14. SeriesException 類

這是一個異常類。它會引發(fā)發(fā)生在時間序列中數據集的數據的異常。異常是引發(fā)上的重復或無效數據的次數。時間序列不能與重復應用,格式必須是有效的。

15. DefaultCategoryDataset

這是一個默認的實現類CategoryDataset接口。

類的構造函數

S.N.構造函數及描述
1DefaultCategoryDataset() 此構造函數創(chuàng)建新的空數據集。

類方法

S.N.方法及描述
1addValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) 這種方法增加了一個值,以使用可比的鍵表。
2addValue(java.lang.Number value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) 這種方法增加了一個值的表。
3setValue(double value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) 此方法添加或在表中更新的值,并發(fā)送aDatasetChangeEvent給所有注冊的監(jiān)聽器。
4setValue(java.lang.Number value, java.lang.Comparable rowKey, java.lang.Comparable columnKey) 此方法添加或在表中更新的值,并發(fā)送DatasetChangeEvent給所有注冊的監(jiān)聽器。

參見JFreeChart的API,用于各種其他方法和字段的詳細信息。

16. 序列數據集

系列數據集用于XY圖表。該軟件包是org.Jfree.data.xy,其中包含類和屬于XY圖表接口。核心接口是XYDataset。

XYDataset

這是通過該數據中的(X,Y)的項目的形式可被訪問的接口。正如其名稱所提示的,可以使用這個數據集服務XY圖表。一些在這個接口中的方法都取自SeriesDateset接口。

XYZDataset

這是通過該數據的形式(x,y,z)的項目可被訪問的接口。正如其名稱所暗示的,可以使用這個數據集服務XYZ圖。一些在這個接口中的方法都取自SeriesDateset。

XYSeries

這是一類,它代表了在所述形式的零個或多個數據項(x,y)的序列。默認情況下,該系列中的數據項都按升序排列由x值,并重復允許的x值。無論是排序和復制缺省值可以在構造函數中被改變。 Y值可以表示為空值代表缺失值。

類構造函數

S.N.構造函數描述
1XYSeries(java.lang.Comparable key) 該構造函數創(chuàng)建一個新的空系列。
2XYSeries(java.lang.Comparable key, boolean autoSort) 它構造一個新的空系列,具有自動排序標志集的請求,并且重復的值是允許的。
3XYSeries(java.lang.Comparable key, boolean autoSort, boolean allowDuplicateXValues) 它構造一個新的xy系列不包含任何數據。

類方法

S.N.方法描述
1add(double x, double y) 這種方法增加了數據項成系列。

在上述方法中使用的教程例子。如果想了解其余的方法和字段,請參考JFreeChart的API。

XYSeriesCollection

XYSeriesCollection類有類似父類AbstractIntervelDataset,AbstractXYDatset,AbstractSeriesDataset和AbstractDataset。一些在這個類中的方法屬于這個類的父類。

類的構造函數

S.N.構造函數描述
1XYSeriesCollection() 它構造一個空的數據集。
2XYSeriesCollection(XYSeries xyseries)它構建了一個數據集,并用一個系列的填充。

類方法

S.N.方法及描述
1addSeries(XYSeries series) 這種方法增加了一系列的收集和發(fā)送DatasetChangeEvent向所有注冊的偵聽器。

參見JFreeChart的API其余的方法和字段。

Default XYZDataset :

DefaultXYZDataset類都有父類,如AbstractIntervelDataset,AbstractXYDatset,AbstractSeriesDataset,AbstractDataset和AbstractXYZDataset。一些在這個類中的方法屬于這一類的父類。

類的構造函數

S.N.構造方法及描述
1DefaultXYZDataset() 它構造一個空的數據集。

類方法

S.N.方法及描述
1addSeries(java.lang.Comparable seriesKey, double[ ][ ] data ) 該方法增加了一系列的收集和發(fā)送DatasetChangeEvent向所有注冊的偵聽器。

請參考JFreeChart的API,其余的方法和字段。

JFreeCharts的時間序列

該軟件包是org.jfree.data.time。該軟件包包含用于時間相關的數據的類和接口。

TimeSeries :

此類表示數據項的期值的形式,其中一段是RegularTimePeriod抽象類,如時間,日,小時,分鐘和秒類的一些實例序列。

類的構造函數

S.N.構造方法及描述
1TimeSeries(java.lang.Comparable name) 它創(chuàng)建新的空系列。
2TimeSeries(java.lang.Comarable name, java.lang.String domain, java.lang.Strin range) 它會創(chuàng)建一個不包含任何數據的新的時間序列。

類方法

S.N.方法及描述
1add(RegularTimePeriod period,double value) 該方法增加了一個新的數據項用以串聯。

其余的方法和字段參見JFreeChart的API。

TimeSeriesCollection :

這是作為時間序列的對象的集合的類。這個類實現了XYDataset接口,以及它擴展了IntervelXYDataset接口。這使得它可以方便地收集序列數據對象。

類的構造函數

S.N.構造方法及描述
1TimeSeriesCollection() 它構造一個空的數據集,綁在默認時區(qū)。
2TimeSeriesCollection(TimeSeries series) 它構造一個包含單個系列(更多可添加),綁在默認時區(qū)的數據集。
3TimeSeriesCollection(TimeSeries series, java.util.TimeZone zone) 它構造包含單個系列(更可添加),綁定到特定的時間段的數據集。
4TimeSeriesCollection(java.util.TimeZone zone) 它構造一個空的數據集時,綁定到特定的時間區(qū)。

類方法

S.N.方法及描述
1addSeries(TimeSeries series) 方法增加了一系列的收集和發(fā)送DatasetChangeEvent向所有注冊的偵聽器。

其余的方法和字段請參考JFreeChart的API。

Second 類:

這個類表示一個特定的日子一秒鐘。這個類是不可變的,這是對所有RegularTimePeriod子類的要求。

類的構造函數

S.N.構造函數及描述
1Second() 它構造一個新的Second,基于系統(tǒng)的日期/時間。
2Second(java.util.Date time) 它構造從指定日期/時間和默認時區(qū)的新實例。
3Second(java.util.Date time, java.util.TimeZone zone, java.util.Locale locale) 它創(chuàng)建基于所提供的時間和時區(qū)的新的Second對象。
4Second(int second, int minute, int hour, int day, int month, int year)它創(chuàng)建了一個新的Second對象。
5Second(int second, Minute minute) 它構建了一個新的Second。

類方法

S.N.方法及描述
1getSecond() 它返回分鐘和秒。
2next() 它返回當前的下一秒。

其余的方法和字段請參考JFreeChart的API。

JFreeCharts 中的幀:

該軟件包是org.jfree.ui。這是包所屬JFreeChart的JCommons的API。它包含用于創(chuàng)建預配置的圖表框架的實用程序類。

ApplicationFrame :

這是用于創(chuàng)建簡單的應用程序的主框架的基類。幀監(jiān)聽窗口關閉事件,并作出反應,關閉JVM。這是很好的小型演示應用。對于企業(yè)應用程序,需要使用一些更穩(wěn)健的東西。在這個類中的主要核心方法取自Component, Container, Window, Frame 和Jframe類。

類構造函數

S.N.構造方法及描述
1ApplicationFrame(java.lang.String title) 它會創(chuàng)建一個字符串標題的應用程序框架。

這個類有助于創(chuàng)建AWT框架。這就是為什么我們使用這個類作為父類在本教程中的例子的原因。

其采取父類的方法用于打開一個框架,關閉一個框架,改變大小,改變背景或前景顏色和監(jiān)聽器。

RefineryUtilities :

這是關于用戶界面的工具方法的類的集合。

類方法

S.N.方法及描述
1centerFrameOnScreen(java.awt.Window frame) 它定位在屏幕的中間的指定幀。

在上述方法中使用的教程例子以外的類,方法和字段參見JFreeChart的API。

三、高級用法

1. 圖形的展示與保存

package plot;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class Example {
	public static void main(String[] args) throws IOException {
		// 創(chuàng)建數據
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
	    dataset.addValue( 15 , "schools" , "1970" );
	    dataset.addValue( 30 , "schools" , "1980" );
	    dataset.addValue( 60 , "schools" , "1990" );
	    dataset.addValue( 120 , "schools" , "2000" );
	    dataset.addValue( 240 , "schools" , "2010" ); 
	    dataset.addValue( 300 , "schools" , "2014" );
	    // 創(chuàng)建JFreeChart對象
	    JFreeChart chart = ChartFactory.createLineChart(
	         "Example",  // 圖標題
	         "Year",  // x軸
	         "Schools Count",// y軸
	         dataset,
	         PlotOrientation.VERTICAL,
	         false,true,false);
	    // 保存到本地(PNG或者JPEG格式)
	    File f = new File( "chart.png" ); 
	    ChartUtilities.saveChartAsPNG(f ,chart, 800 ,400);
        // 保存為矢量圖形(需要借助JFreeSVG包)
        SVGGraphics2D g2 = new SVGGraphics2D(640, 480);
        chart.draw(g2, new Rectangle(640, 480));
        File f = new File("SVGBarChartDemo.svg");
        SVGUtils.writeToSVG(f, g2.getSVGElement());
	    // 利用swing進行展示
	    JPanel jPanel = new ChartPanel(chart);
        JFrame frame = new JFrame("JFreechart Test");
        frame.add(jPanel);
        frame.setBounds(0, 0, 800, 500);
        frame.setVisible(true);
        // 利用awt進行顯示
        ChartFrame chartFrame = new ChartFrame("Test", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);      
	}
}

2. 通用設置

package plot;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
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.LegendTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleEdge;
public class Test {
	public static void main(String[] args) {
		// 添加數據集
        DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
        dataSet.addValue(3542, "2020年", "第一季度");// Y軸-圖例-X軸
        dataSet.addValue(3692, "2020年", "第二季度");// Y軸-圖例-X軸
        dataSet.addValue(8542, "2020年", "第三季度");// Y軸-圖例-X軸
        dataSet.addValue(5742, "2020年", "第四季度");// Y軸-圖例-X軸
        dataSet.addValue(1242, "2021年", "第一季度");// Y軸-圖例-X軸
        dataSet.addValue(2612, "2021年", "第二季度");// Y軸-圖例-X軸
        dataSet.addValue(1942, "2021年", "第三季度");// Y軸-圖例-X軸
        dataSet.addValue(4612, "2021年", "第四季度");// Y軸-圖例-X軸
        // 主題樣式設置
        StandardChartTheme standardChartTheme = new StandardChartTheme("CN"); // 創(chuàng)建主題樣式
        standardChartTheme.setExtraLargeFont(new Font("宋體", Font.BOLD, 64)); // 設置標題字體
        standardChartTheme.setRegularFont(new Font("宋體", Font.BOLD, 32)); // 設置圖例的字體
        standardChartTheme.setLargeFont(new Font("宋體", Font.BOLD, 20)); // 設置軸向的字體
        standardChartTheme.setChartBackgroundPaint(Color.WHITE);// 設置主題背景色
        ChartFactory.setChartTheme(standardChartTheme);// 應用主題樣式
        // 定義圖表對象
        JFreeChart chart = ChartFactory.createLineChart(
        		// 圖表的標題-橫軸標題-縱軸標題-數據集
        		"JFreeChart折線圖", "銷售額", "季度", dataSet, 
        		// 圖表方向-圖例-工具提示-超鏈接
        		PlotOrientation.VERTICAL,true, false, false);
        // chart.setTitle(new TextTitle(title[0], new Font("宋書", Font.BOLD, 64)));// 重新設置標題
        // chart.removeLegend();// 是否移除圖例
        CategoryPlot plot = (CategoryPlot)chart.getPlot(); // 獲得圖表顯示對象
        plot.setOutlineVisible(false);// 是否顯示外邊框
        plot.setOutlinePaint(Color.WHITE);// 外邊框顏色
        // plot.setOutlineStroke(new BasicStroke(2.f));// 外邊框框線粗細
        plot.setBackgroundPaint(Color.WHITE);// 白色背景
        plot.setNoDataMessage("無圖表數據");// 無數據提示
        plot.setNoDataMessageFont(new Font("宋體", Font.BOLD, 32));// 提示字體
        plot.setNoDataMessagePaint(Color.RED);// 提示字體顏色
        // 圖例
        LegendTitle legend = chart.getLegend();// 圖例對象
        legend.setPosition(RectangleEdge.BOTTOM);// 圖例所在位置(上、下、左、右)
        legend.setVisible(true);// 是否顯示圖例
        legend.setBorder(2, 0, 0, 2); // 圖例上下左右邊框粗細
        legend.setItemFont(new Font("宋體", Font.BOLD, 32));// 圖例大小
        // 網格線
        plot.setDomainGridlinePaint(Color.BLUE);
        plot.setDomainGridlinesVisible(true);// 豎線
        plot.setRangeGridlinePaint(Color.BLACK);
        plot.setRangeGridlinesVisible(true);// 橫線
        // 橫坐標
        CategoryAxis xAxis = plot.getDomainAxis();
        xAxis.setTickLabelFont(new Font("宋體", Font.BOLD, 25));// 設置X軸值字體
        xAxis.setLabelFont(new Font("宋書", Font.BOLD, 32));// 設置X軸標簽字體
        xAxis.setAxisLineStroke(new BasicStroke(1f)); // 設置X軸線粗細
        xAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 傾斜
        xAxis.setAxisLinePaint(Color.BLACK);// 軸線顏色
        xAxis.setUpperMargin(0.18D);// 右邊距
        xAxis.setLowerMargin(0.1D);// 左邊距
        // 縱坐標
        ValueAxis yAxis = plot.getRangeAxis();
        yAxis.setTickLabelFont(new Font("宋體", Font.BOLD, 25));// 設置y軸字體
        yAxis.setLabelFont(new Font("宋體", Font.BOLD, 32));// 設置X軸標簽字體
        yAxis.setAxisLineStroke(new BasicStroke(1f)); // 設置y軸線粗細
        yAxis.setAxisLinePaint(Color.BLACK);// 軸線顏色
        yAxis.setUpperMargin(0.18D);// 上邊距
        yAxis.setLowerMargin(0.1D);// 下邊距
        LineAndShapeRenderer r1 = new LineAndShapeRenderer();
        // 數據標簽
        r1.setBaseItemLabelsVisible(true);// 是否顯示數據標簽
        r1.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());// 數據標簽格式
        r1.setSeriesPaint(0, Color.BLUE);
        r1.setBaseShapesFilled(Boolean.TRUE); // 在數據點顯示實心的小圖標
        r1.setBaseShapesVisible(true); // 設置顯示小圖標
        r1.setBaseItemLabelFont(new Font("Dialog", Font.BOLD, 12));// 設置數字的字體大小
        r1.setBaseStroke(new BasicStroke(4f));
        // 線條顏色
        r1.setSeriesPaint(0, new Color(204, 232, 207)); 
        r1.setSeriesPaint(1, new Color(0x00, 0xff, 0xff)); 
        r1.setSeriesShapesVisible(0,  false);
        r1.setSeriesShapesVisible(1,  false);
        plot.setDataset(dataSet);
        // 應用以上設置
        plot.setRenderer(r1); 
        // 條形圖間距設置
        // BarRenderer r = (BarRenderer) plot.getRenderer();
		// renderer.setItemMargin(0.01);
        // 顯示圖表
        ChartFrame chartFrame = new ChartFrame("Test", chart);
        chartFrame.pack();
        chartFrame.setVisible(true);  
	}
}

3. 其他設置

3.1 坐標軸刻度設置

package com.test;
import java.io.File;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Test {
	public static void main(String[] args) throws IOException {
		// 創(chuàng)建數據
		final XYSeries data = new XYSeries( "InternetExplorer" );
		data.add( 1.0 , 4.0 );          
		data.add( 2.0 , 5.0 );          
		data.add( 3.0 , 4.0 ); 
		data.add( 4.0 , 5.0 );          
		data.add( 5.0 , 4.0 );          
		data.add( 6.0 , 5.0 );
		data.add( 6.0 , 4.0 ); 
		data.add( 7.0 , 5.0 ); 
		data.add( 8.0 , 4.0 ); 
		data.add( 9.0 , 5.0 ); 
		final XYSeriesCollection dataset = new XYSeriesCollection( );        
		dataset.addSeries(data);
	    // 創(chuàng)建JFreeChart對象
	    JFreeChart chart = ChartFactory.createXYLineChart(
	    		"Example", "X", "Y", dataset,
	    		PlotOrientation.VERTICAL,
	    		false, true, false);
	    // 設置坐標軸刻度間距
	    XYPlot plot = (XYPlot) chart.getPlot();
	    NumberAxis xAxis = (NumberAxis) plot.getDomainAxis();  
	    xAxis.setTickUnit(new NumberTickUnit(2));
	    // 保存到本地
	    File lineChart = new File( "1.png" ); 
	    ChartUtilities.saveChartAsPNG(lineChart ,chart, 1000 ,500);
	}
}

四、其他圖表

1. 時間序列圖

package plot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.DateTickUnit;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardXYItemLabelGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.TextAnchor;
import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat;
public class TimeSeriesChart {
    private TimeSeriesChart() {
        // A網站的訪問量統(tǒng)計
        @SuppressWarnings("deprecation")
		TimeSeries timeSeries1 = new TimeSeries("A", Month.class);
        // 添加數據
        timeSeries1.add(new Month(1, 2016), 154);
        timeSeries1.add(new Month(2, 2016), 256);
        timeSeries1.add(new Month(3, 2016), 312);
        timeSeries1.add(new Month(4, 2016), 489);
        timeSeries1.add(new Month(5, 2016), 563);
        timeSeries1.add(new Month(6, 2016), 555);
        timeSeries1.add(new Month(7, 2016), 359);
        timeSeries1.add(new Month(8, 2016), 291);
        timeSeries1.add(new Month(9, 2016), 123);
        timeSeries1.add(new Month(10, 2016), 438);
        timeSeries1.add(new Month(11, 2016), 286);
        // A網站的訪問量統(tǒng)計
        TimeSeries timeSeries2 = new TimeSeries("A", Month.class);
        // 添加數據
        timeSeries2.add(new Month(1, 2016), 124);
        timeSeries2.add(new Month(2, 2016), 326);
        timeSeries2.add(new Month(3, 2016), 12);
        timeSeries2.add(new Month(4, 2016), 567);
        timeSeries2.add(new Month(5, 2016), 546);
        timeSeries2.add(new Month(6, 2016), 123);
        timeSeries2.add(new Month(7, 2016), 222);
        timeSeries2.add(new Month(8, 2016), 545);
        timeSeries2.add(new Month(9, 2016), 56);
        timeSeries2.add(new Month(10, 2016), 543);
        timeSeries2.add(new Month(11, 2016), 221);
        // 定義時間序列的集合
        TimeSeriesCollection lineDataset = new TimeSeriesCollection();
        lineDataset.addSeries(timeSeries1);
        lineDataset.addSeries(timeSeries2);
//         JFreeChart chart = ChartFactory.createXYStepChart("Time line graph", "M", "F", xySeriesCollection, PlotOrientation.HORIZONTAL, false, false, false);
        JFreeChart chart = ChartFactory.createTimeSeriesChart("Time line graph", "M", "F", lineDataset, false, false, false);
        //設置主標題
        chart.setTitle(new TextTitle("A,B網站訪問量統(tǒng)計對比圖"));
        //設置子標題
        TextTitle subtitle = new TextTitle("2016年度", new Font("宋體", Font.BOLD, 12));
        chart.addSubtitle(subtitle);
        chart.setAntiAlias(true);
        //設置時間軸的范圍。
        XYPlot plot = (XYPlot) chart.getPlot();
        DateAxis dateaxis = (DateAxis) plot.getDomainAxis();
        dateaxis.setDateFormatOverride(new SimpleDateFormat("M"));
        dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH, 2));
        //設置曲線是否顯示數據點
        XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer) plot.getRenderer();
        xylinerenderer.setBaseShapesVisible(true);
        //設置曲線顯示各數據點的值
        XYItemRenderer xyitem = plot.getRenderer();
        xyitem.setBaseItemLabelsVisible(true);
        xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
        xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
        xyitem.setBaseItemLabelFont(new Font("Dialog", Font.BOLD, 12));
        plot.setRenderer(xyitem);
        JPanel jPanel = new ChartPanel(chart);
        JFrame frame = new JFrame("JFreechart Test");
        frame.add(jPanel);
        frame.setBounds(0, 0, 800, 600);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
        TimeSeriesChart timeSeriesChart = new TimeSeriesChart();
    }
}

2. XY階梯面積圖

package plot;
import java.awt.Color;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Example {
	public static void main(String[] args) throws IOException {
		// 創(chuàng)建XYSeriesCollection對象
		XYSeriesCollection dataset = new XYSeriesCollection();
		// 系列一數據
		XYSeries series1 = new XYSeries("Series1");
		series1.add(2, 4);
		series1.add(3, 6);
		series1.add(5, 2);
		series1.add(8, 5);
		series1.add(1, 8);
		// 系列二數據
		XYSeries series2 = new XYSeries("Series2");
		series2.add(5, 6);
		series2.add(9, 5);
		series2.add(10, 9);
		series2.add(18, 11);
		series2.add(15, 18);
		// 添加到數據集
		dataset.addSeries(series1);
		dataset.addSeries(series2);
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = ChartFactory.createXYStepAreaChart("XY Step Area Chart", // Chart Title
				"X-Axis", // X-Axis Label
				"Y-Axis", // Y-Axis Label
				dataset);
		XYPlot plot = (XYPlot) chart.getPlot();
		plot.setBackgroundPaint(new Color(229, 150, 97, 60));
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

3. 條形圖與折線圖結合

package plot;
import java.io.IOException;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
public class ShowExample {
	public static void main(String[] args) throws IOException {
		// 創(chuàng)建數據
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(1.0, "A", "Ⅰ");
		dataset.addValue(3.0, "A", "Ⅱ");
		dataset.addValue(5.0, "A", "Ⅲ");
		dataset.addValue(5.0, "A", "Ⅳ");
		dataset.addValue(5.0, "B", "Ⅰ");
		dataset.addValue(6.0, "B", "Ⅱ");
		dataset.addValue(10.0, "B", "Ⅲ");
		dataset.addValue(4.0, "B", "Ⅳ");
		// 創(chuàng)建CategoryPlot對象
		CategoryPlot plot = new CategoryPlot();
		// 添加第一個數據集并渲染為line
		CategoryItemRenderer lineRenderer = new LineAndShapeRenderer();
		plot.setDataset(0, dataset);
		plot.setRenderer(0, lineRenderer);
		// 添加第二個數據集并渲染為線條bar
		CategoryItemRenderer baRenderer = new BarRenderer();
		plot.setDataset(1, dataset);
		plot.setRenderer(1, baRenderer);
		// 設置坐標軸
		plot.setDomainAxis(new CategoryAxis("Time"));
		plot.setRangeAxis(new NumberAxis("Value"));
		// 創(chuàng)建JFreeChart對象
		JFreeChart chart = new JFreeChart(plot);
		// 利用awt進行顯示
		ChartFrame chartFrame = new ChartFrame("Test", chart);
		chartFrame.pack();
		chartFrame.setVisible(true);
	}
}

參考資料

官網:www.jfree.org

中文JFreeChart教程

英文JFreeChart教程

 JFreeChart | BORAJI.COM

https://www.roseindia.net/chartgraphs/index.shtml

到此這篇關于Java繪圖庫JFreeChart的使用教程的文章就介紹到這了,更多相關Java繪圖庫JFreeChart內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringMVC?RESTFul實現列表功能

    SpringMVC?RESTFul實現列表功能

    這篇文章主要為大家介紹了SpringMVC?RESTFul實現列表功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 使用MyEclipse 開發(fā)struts2框架實現登錄功能(結構教程)

    使用MyEclipse 開發(fā)struts2框架實現登錄功能(結構教程)

    這篇文章主要介紹了使用MyEclipse 開發(fā)struts2框架實現登錄功能(結構教程)的相關資料,需要的朋友可以參考下
    2016-03-03
  • Java Swing JList列表框的實現

    Java Swing JList列表框的實現

    這篇文章主要介紹了Java Swing JList列表框的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • SpringBoot @Schedule的使用注意與原理分析

    SpringBoot @Schedule的使用注意與原理分析

    這篇文章主要介紹了SpringBoot @Schedule的使用注意與原理分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java cookie和session會話技術介紹

    Java cookie和session會話技術介紹

    session的工作原理和cookie非常類似,在cookie中存放一個sessionID,真實的數據存放在服務器端,客戶端每次發(fā)送請求的時候帶上sessionID,服務端根據sessionID進行數據的響應
    2023-04-04
  • Spring中bean的生命周期之getSingleton方法

    Spring中bean的生命周期之getSingleton方法

    今天給大家?guī)淼氖顷P于Spring的相關知識,文章圍繞著Spring中bean的生命周期之getSingleton方法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java Swagger技術使用指南

    Java Swagger技術使用指南

    Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數和模型緊密集成到服務器端的代碼,允許API來始終保持同步
    2021-09-09
  • JVM內存劃分機制的使用詳解

    JVM內存劃分機制的使用詳解

    這篇文章主要介紹了JVM內存劃分機制的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Windows下安裝Maven的詳細教程(含鏡像與本地倉庫配置)

    Windows下安裝Maven的詳細教程(含鏡像與本地倉庫配置)

    Maven?是?Java?生態(tài)系統(tǒng)中不可或缺的項目管理和構建自動化工具,本文詳細介紹了在Windows系統(tǒng)上安裝和配置Maven的完整流程,希望對大家有所幫助
    2026-04-04
  • Spring Security實現兩周內自動登錄

    Spring Security實現兩周內自動登錄"記住我"功能

    登錄過程中經常使用的“記住我”功能,也就是我們經常會在各種網站登陸時見到的"兩周內免登錄",“三天內免登錄”的功能。今天小編給大家分享基于Spring Security實現兩周內自動登錄"記住我"功能,感興趣的朋友一起看看吧
    2019-11-11

最新評論

将乐县| 柳州市| 上虞市| 凤城市| 边坝县| 行唐县| 延寿县| 安乡县| 老河口市| 遵义县| 巴彦淖尔市| 句容市| 虞城县| 宁阳县| 安图县| 七台河市| 宁波市| 永和县| 晋州市| 旬阳县| 龙州县| 平定县| 城步| 班戈县| 吴川市| 章丘市| 齐河县| 石景山区| 平安县| 乐昌市| 讷河市| 砚山县| 炎陵县| 临潭县| 防城港市| 吴江市| 林周县| 辽宁省| 潜江市| 镶黄旗| 修文县|