JFreeChart - Biểu đồ đường
Biểu đồ đường hoặc biểu đồ đường hiển thị thông tin dưới dạng một chuỗi các điểm dữ liệu (điểm đánh dấu) được nối với nhau bằng các đoạn đường thẳng. Biểu đồ Đường thể hiện cách dữ liệu thay đổi ở tần suất thời gian bằng nhau.
Chương này trình bày cách chúng ta có thể sử dụng JFreeChart để tạo Line Chart từ một tập hợp dữ liệu kinh doanh nhất định.
Dữ liệu kinh doanh
Ví dụ sau đây vẽ biểu đồ đường để hiển thị xu hướng số lượng trường học được mở trong các năm khác nhau bắt đầu từ năm 1970.
Dữ liệu đã cho như sau:
Năm | SỐ TRƯỜNG |
---|---|
1970 | 15 |
1980 | 30 |
1990 | 60 |
2000 | 120 |
2013 | 240 |
2014 | 300 |
Ứng dụng dựa trên AWT
Sau đây là mã để tạo Biểu đồ đường từ thông tin ở trên. Mã này giúp bạn nhúng biểu đồ đường vào bất kỳ ứng dụng dựa trên AWT nào.
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart_AWT extends ApplicationFrame {
public LineChart_AWT( String applicationTitle , String chartTitle ) {
super(applicationTitle);
JFreeChart lineChart = ChartFactory.createLineChart(
chartTitle,
"Years","Number of Schools",
createDataset(),
PlotOrientation.VERTICAL,
true,true,false);
ChartPanel chartPanel = new ChartPanel( lineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
setContentPane( chartPanel );
}
private DefaultCategoryDataset createDataset( ) {
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" );
return dataset;
}
public static void main( String[ ] args ) {
LineChart_AWT chart = new LineChart_AWT(
"School Vs Years" ,
"Numer of Schools vs years");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
Hãy để chúng tôi giữ mã Java ở trên LineChart_AWT.java tệp, sau đó biên dịch và chạy nó từ lệnh được nhắc là -
$javac LineChart_AWT.java
$java LineChart_AWT
Nếu mọi thứ đều ổn, nó sẽ biên dịch và chạy để tạo ra Đồ thị đường sau:
Tạo ảnh JPEG
Chúng ta hãy viết lại ví dụ trên để tạo ảnh JPEG từ một dòng lệnh.
import java.io.*;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart {
public static void main( String[ ] args ) throws Exception {
DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
line_chart_dataset.addValue( 15 , "schools" , "1970" );
line_chart_dataset.addValue( 30 , "schools" , "1980" );
line_chart_dataset.addValue( 60 , "schools" , "1990" );
line_chart_dataset.addValue( 120 , "schools" , "2000" );
line_chart_dataset.addValue( 240 , "schools" , "2010" );
line_chart_dataset.addValue( 300 , "schools" , "2014" );
JFreeChart lineChartObject = ChartFactory.createLineChart(
"Schools Vs Years","Year",
"Schools Count",
line_chart_dataset,PlotOrientation.VERTICAL,
true,true,false);
int width = 640; /* Width of the image */
int height = 480; /* Height of the image */
File lineChart = new File( "LineChart.jpeg" );
ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
}
}
Hãy để chúng tôi giữ mã Java ở trên LineChart.java tệp, sau đó biên dịch và chạy nó từ lệnh được nhắc là -
$javac LineChart.java
$java LineChart
Nếu mọi thứ đều ổn, nó sẽ biên dịch và thực thi để tạo tệp ảnh JPEG có tên LineChart.jpeg trong thư mục hiện tại của bạn.