JFreeChart - Biểu đồ XY
Biểu đồ XY (phân tán) dựa trên một chuỗi dữ liệu bao gồm danh sách các giá trị X và Y. Mỗi cặp giá trị (X, Y) là một điểm trong hệ tọa độ. Ở đây, một giá trị xác định vị trí ngang (X) và giá trị kia xác định vị trí dọc (Y). Chương này giải thích - cách chúng ta có thể sử dụng JFreeChart để tạoXY Chart từ một tập hợp dữ liệu kinh doanh nhất định.
Dữ liệu kinh doanh
Hãy xem xét một ví dụ mà chúng tôi muốn tạo biểu đồ XY cho tất cả các trình duyệt chính. Tại đây, các điểm hiệu suất khác nhau được thu thập từ các loại người khác nhau như được hiển thị bên dưới -
Firefox | Danh mục (X) | Điểm (Y) |
---|---|---|
1,0 | 1,0 | |
2.0 | 4.0 | |
3.0 | 3.0 | |
Chrome | Danh mục (X) | Điểm (Y) |
1,0 | 4.0 | |
2.0 | 5.0 | |
3.0 | 6.0 | |
IE | Danh mục (X) | Điểm (Y) |
3.0 | 4.0 | |
4.0 | 5.0 | |
5.0 | 4.0 |
Ứng dụng dựa trên AWT
Sau đây là mã để tạo Biểu đồ XY từ thông tin đã cho ở trên. Mã này giúp bạn nhúng biểu đồ XY vào bất kỳ ứng dụng dựa trên AWT nào.
import java.awt.Color;
import java.awt.BasicStroke;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
public class XYLineChart_AWT extends ApplicationFrame {
public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
super(applicationTitle);
JFreeChart xylineChart = ChartFactory.createXYLineChart(
chartTitle ,
"Category" ,
"Score" ,
createDataset() ,
PlotOrientation.VERTICAL ,
true , true , false);
ChartPanel chartPanel = new ChartPanel( xylineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
final XYPlot plot = xylineChart.getXYPlot( );
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
renderer.setSeriesPaint( 0 , Color.RED );
renderer.setSeriesPaint( 1 , Color.GREEN );
renderer.setSeriesPaint( 2 , Color.YELLOW );
renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
plot.setRenderer( renderer );
setContentPane( chartPanel );
}
private XYDataset createDataset( ) {
final XYSeries firefox = new XYSeries( "Firefox" );
firefox.add( 1.0 , 1.0 );
firefox.add( 2.0 , 4.0 );
firefox.add( 3.0 , 3.0 );
final XYSeries chrome = new XYSeries( "Chrome" );
chrome.add( 1.0 , 4.0 );
chrome.add( 2.0 , 5.0 );
chrome.add( 3.0 , 6.0 );
final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
iexplorer.add( 3.0 , 4.0 );
iexplorer.add( 4.0 , 5.0 );
iexplorer.add( 5.0 , 4.0 );
final XYSeriesCollection dataset = new XYSeriesCollection( );
dataset.addSeries( firefox );
dataset.addSeries( chrome );
dataset.addSeries( iexplorer );
return dataset;
}
public static void main( String[ ] args ) {
XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
"Which Browser are you using?");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
Hãy để chúng tôi giữ mã Java ở trên XYLineChart_AWT.java tệp, sau đó biên dịch và chạy nó từ lệnh được nhắc là:
$javac XYLineChart_AWT.java
$java XYLineChart_AWT
Nếu mọi thứ đều ổn, nó sẽ biên dịch và chạy để tạo ra Đồ thị XY sau:
Tạo ảnh JPEG
Chúng ta hãy viết lại ví dụ trên để tạo ảnh JPEG từ dòng lệnh.
import java.io.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.ChartUtilities;
public class XYLineChart_image {
public static void main( String[ ] args )throws Exception {
final XYSeries firefox = new XYSeries( "Firefox" );
firefox.add( 1.0 , 1.0 );
firefox.add( 2.0 , 4.0 );
firefox.add( 3.0 , 3.0 );
final XYSeries chrome = new XYSeries( "Chrome" );
chrome.add( 1.0 , 4.0 );
chrome.add( 2.0 , 5.0 );
chrome.add( 3.0 , 6.0 );
final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
iexplorer.add( 3.0 , 4.0 );
iexplorer.add( 4.0 , 5.0 );
iexplorer.add( 5.0 , 4.0 );
final XYSeriesCollection dataset = new XYSeriesCollection( );
dataset.addSeries( firefox );
dataset.addSeries( chrome );
dataset.addSeries( iexplorer );
JFreeChart xylineChart = ChartFactory.createXYLineChart(
"Browser usage statastics",
"Category",
"Score",
dataset,
PlotOrientation.VERTICAL,
true, true, false);
int width = 640; /* Width of the image */
int height = 480; /* Height of the image */
File XYChart = new File( "XYLineChart.jpeg" );
ChartUtilities.saveChartAsJPEG( XYChart, xylineChart, width, height);
}
}
Hãy để chúng tôi giữ mã Java ở trên XYLineChart_image.java tệp, sau đó biên dịch và chạy nó từ lệnh được nhắc là -
$javac XYLineChart_image.java
$java XYLineChart_image
Nếu mọi thứ đều ổn, nó sẽ biên dịch và chạy để tạo tệp ảnh JPEG có tên XYLineChart.jpeg trong thư mục hiện tại của bạn.