JFreeChart - Biểu đồ thanh
Chương này trình bày cách bạn có thể sử dụng JFreeChart để tạo Bar Chart từ một tập hợp dữ liệu kinh doanh nhất định.
Biểu đồ thanh sử dụng các thanh định hướng khác nhau (ngang hoặc dọc) để hiển thị so sánh trong các danh mục khác nhau. Một trục (trục miền) của biểu đồ hiển thị miền cụ thể đang được so sánh và trục còn lại (trục phạm vi) biểu thị các giá trị rời rạc.
Dữ liệu kinh doanh
Ví dụ sau mô tả các số liệu thống kê về ô tô khác nhau với sự trợ giúp của biểu đồ thanh. Sau đây là danh sách các thương hiệu xe hơi cùng với các đặc điểm khác nhau của chúng, chúng tôi sẽ hiển thị bằng biểu đồ thanh -
Xe hơi | Tốc độ | Đánh giá của người dùng | Millage | Sự an toàn |
---|---|---|---|---|
Fiat | 1,0 | 3.0 | 5.0 | 5.0 |
Audi | 5.0 | 6.0 | 10.0 | 4.0 |
Ford | 4.0 | 2.0 | 3.0 | 6.0 |
Ứng dụng dựa trên AWT
Sau đây là mã để tạo Biểu đồ thanh từ thông tin đã cho ở trên. Mã này giúp bạn nhúng biểu đồ thanh vào bất kỳ ứng dụng dựa trên AWT nào.
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class BarChart_AWT extends ApplicationFrame {
public BarChart_AWT( String applicationTitle , String chartTitle ) {
super( applicationTitle );
JFreeChart barChart = ChartFactory.createBarChart(
chartTitle,
"Category",
"Score",
createDataset(),
PlotOrientation.VERTICAL,
true, true, false);
ChartPanel chartPanel = new ChartPanel( barChart );
chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) );
setContentPane( chartPanel );
}
private CategoryDataset createDataset( ) {
final String fiat = "FIAT";
final String audi = "AUDI";
final String ford = "FORD";
final String speed = "Speed";
final String millage = "Millage";
final String userrating = "User Rating";
final String safety = "safety";
final DefaultCategoryDataset dataset =
new DefaultCategoryDataset( );
dataset.addValue( 1.0 , fiat , speed );
dataset.addValue( 3.0 , fiat , userrating );
dataset.addValue( 5.0 , fiat , millage );
dataset.addValue( 5.0 , fiat , safety );
dataset.addValue( 5.0 , audi , speed );
dataset.addValue( 6.0 , audi , userrating );
dataset.addValue( 10.0 , audi , millage );
dataset.addValue( 4.0 , audi , safety );
dataset.addValue( 4.0 , ford , speed );
dataset.addValue( 2.0 , ford , userrating );
dataset.addValue( 3.0 , ford , millage );
dataset.addValue( 6.0 , ford , safety );
return dataset;
}
public static void main( String[ ] args ) {
BarChart_AWT chart = new BarChart_AWT("Car Usage Statistics",
"Which car do you like?");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
Hãy để chúng tôi giữ mã Java ở trên BarChart_AWT.java tệp, sau đó biên dịch và chạy nó từ lệnh được nhắc là -
$javac BarChar_AWT.java
$java BarChart_AWT
Nếu mọi thứ đều ổn, nó sẽ biên dịch và chạy để tạo ra Đồ thị thanh sau:
Tạo hình ả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.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.ChartUtilities;
public class BarChart {
public static void main( String[ ] args )throws Exception {
final String fiat = "FIAT";
final String audi = "AUDI";
final String ford = "FORD";
final String speed = "Speed";
final String millage = "Millage";
final String userrating = "User Rating";
final String safety = "safety";
final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue( 1.0 , fiat , speed );
dataset.addValue( 3.0 , fiat , userrating );
dataset.addValue( 5.0 , fiat , millage );
dataset.addValue( 5.0 , fiat , safety );
dataset.addValue( 5.0 , audi , speed );
dataset.addValue( 6.0 , audi , userrating );
dataset.addValue( 10.0 , audi , millage );
dataset.addValue( 4.0 , audi , safety );
dataset.addValue( 4.0 , ford , speed );
dataset.addValue( 2.0 , ford , userrating );
dataset.addValue( 3.0 , ford , millage );
dataset.addValue( 6.0 , ford , safety );
JFreeChart barChart = ChartFactory.createBarChart(
"CAR USAGE STATIStICS",
"Category", "Score",
dataset,PlotOrientation.VERTICAL,
true, true, false);
int width = 640; /* Width of the image */
int height = 480; /* Height of the image */
File BarChart = new File( "BarChart.jpeg" );
ChartUtilities.saveChartAsJPEG( BarChart , barChart , width , height );
}
}
Hãy để chúng tôi giữ mã Java ở trên trong tệp BarChart.java, sau đó biên dịch và chạy nó từ lệnh được nhắc dưới dạng:
$javac BarChart.java
$java BarChart
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 BarChart.jpeg trong thư mục hiện tại của bạn.