- JFreeChart 教程
- JFreeChart - 主頁
- JFreeChart - 概述
- JFreeChart - 安裝
- JFreeChart - 架構
- JFreeChart - 引用 API
- JFreeChart - 餅狀圖
- JFreeChart - 條形圖
- JFreeChart - 折線圖
- JFreeChart - XY 圖表
- JFreeChart - 3D 圖表/條形圖
- JFreeChart - 氣泡圖
- JFreeChart - 時間序列圖表
- JFreeChart - 檔案介面
- JFreeChart - 資料庫介面
- JFreeChart 有用資源
- JFreeChart - 快速指南
- JFreeChart - 有用資源
- JFreeChart - 討論
JFreeChart - 氣泡圖
本章演示如何使用 JFreeChart 根據給定的一組業務資料建立氣泡圖。氣泡圖以三維方式顯示資訊。在 (x, y) 座標相交的地方繪製氣泡。氣泡的大小被視為 X 軸和 Y 軸的範圍或數量。
業務資料
讓我們考慮不同的人,以及他們的年齡、體重和工作能力。工作能力可以視為在圖中以氣泡繪製的小時數。
| 體重 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 年齡 | 30 | 40 | 50 | 60 | 70 | 80 | ||
| 10 | 4 | 工作 | ||||||
| 20 | 5 | |||||||
| 30 | 10 | |||||||
| 40 | 8 | |||||||
| 50 | 9 | |||||||
| 60 | 6 | |||||||
基於 AWT 的應用程式
以下是根據上述給定的資訊建立氣泡圖的程式碼。此程式碼幫助你將氣泡圖嵌入任何基於 AWT 的應用程式。
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.data.xy.XYZDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class BubbleChart_AWT extends ApplicationFrame {
public BubbleChart_AWT( String s ) {
super( s );
JPanel jpanel = createDemoPanel( );
jpanel.setPreferredSize(new Dimension( 560 , 370 ) );
setContentPane( jpanel );
}
private static JFreeChart createChart( XYZDataset xyzdataset ) {
JFreeChart jfreechart = ChartFactory.createBubbleChart(
"AGE vs WEIGHT vs WORK",
"Weight",
"AGE",
xyzdataset,
PlotOrientation.HORIZONTAL,
true, true, false);
XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
xyplot.setForegroundAlpha( 0.65F );
XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
xyitemrenderer.setSeriesPaint( 0 , Color.blue );
NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
numberaxis.setLowerMargin( 0.2 );
numberaxis.setUpperMargin( 0.5 );
NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
numberaxis1.setLowerMargin( 0.8 );
numberaxis1.setUpperMargin( 0.9 );
return jfreechart;
}
public static XYZDataset createDataset( ) {
DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset();
double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
double ad3[][] = { ad , ad1 , ad2 };
defaultxyzdataset.addSeries( "Series 1" , ad3 );
return defaultxyzdataset;
}
public static JPanel createDemoPanel( ) {
JFreeChart jfreechart = createChart( createDataset( ) );
ChartPanel chartpanel = new ChartPanel( jfreechart );
chartpanel.setDomainZoomable( true );
chartpanel.setRangeZoomable( true );
return chartpanel;
}
public static void main( String args[ ] ) {
BubbleChart_AWT bubblechart = new BubbleChart_AWT( "Bubble Chart_frame" );
bubblechart.pack( );
RefineryUtilities.centerFrameOnScreen( bubblechart );
bubblechart.setVisible( true );
}
}
讓我們將上述 Java 程式碼保留在 BubbleChart_AWT.java 檔案中,然後從命令提示符處編譯並執行它,如下所示 -
$javac BubbleChart_AWT.java $java BubbleChart_AW
如果一切正常,它將編譯並執行以生成以下氣泡圖 -
JPEG 影像建立
讓我們重新編寫上述示例,以從命令列生成 JPEG 影像。
import java.io.*;
import java.awt.Color;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.chart.ChartUtilities;
public class BubbleChart_image {
public static void main( String args[ ] )throws Exception {
DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset( );
double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
double ad3[ ][ ] = { ad , ad1 , ad2 };
defaultxyzdataset.addSeries( "Series 1" , ad3 );
JFreeChart jfreechart = ChartFactory.createBubbleChart(
"AGE vs WEIGHT vs WORK",
"Weight",
"AGE",
defaultxyzdataset,
PlotOrientation.HORIZONTAL,
true, true, false);
XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
xyplot.setForegroundAlpha( 0.65F );
XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
xyitemrenderer.setSeriesPaint( 0 , Color.blue );
NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
numberaxis.setLowerMargin( 0.2 );
numberaxis.setUpperMargin( 0.5 );
NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
numberaxis1.setLowerMargin( 0.8 );
numberaxis1.setUpperMargin( 0.9 );
int width = 560; /* Width of the image */
int height = 370; /* Height of the image */
File bubbleChart = new File("BubbleChart.jpeg");
ChartUtilities.saveChartAsJPEG(bubbleChart,jfreechart,width,height);
}
}
讓我們將上述 Java 程式碼保留在 BubbleChart_image.java 檔案中,然後從命令提示符處編譯並執行它,如下所示 -
$javac BubbleChart_image.java $java BubbleChart_image
如果一切正常,它將編譯並執行,在你的當前目錄中建立一個名為 BubbleChart.jpeg 的 JPEG 影像檔案。
廣告