- JFreeChart 教程
- JFreeChart - 主页
- JFreeChart - 概览
- JFreeChart - 安装
- JFreeChart - 架构
- JFreeChart - 引用 API
- JFreeChart - 饼图
- JFreeChart - 条形图
- JFreeChart - 折线图
- JFreeChart - XY 图形
- JFreeChart - 3D 图形/条形图
- JFreeChart - 气泡图
- JFreeChart - 时间序列图
- JFreeChart - 文件接口
- JFreeChart - 数据库接口
- JFreeChart 实用资源
- JFreeChart - 快速指南
- JFreeChart - 实用资源
- JFreeChart - 讨论
JFreeChart - 折线图
折线图或线形图使用直线段将信息显示为一系列数据点(标记)。折线图显示数据如何在相等的时间频率下变化。
本章演示如何使用 JFreeChart 根据给定的业务数据集创建 **折线图**。
业务数据
以下示例绘制了一条折线图,显示自 1970 年以来,不同年份开办的学校数量趋势。
给定数据如下 -
| 年份 | 学校数量 |
|---|---|
| 1970 | 15 |
| 1980 | 30 |
| 1990 | 60 |
| 2000 | 120 |
| 2013 | 240 |
| 2014 | 300 |
基于 AWT 的应用程序
以下是根据上述信息创建折线图的代码。此代码可帮助你将折线图嵌入任何基于 AWT 的应用程序。
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 );
}
}
我们把上述 Java 代码放在 **LineChart_AWT.java** 文件中,然后从命令提示符中编译并运行,如下所示 -
$javac LineChart_AWT.java $java LineChart_AWT
如果一切正常,它将编译并运行,生成以下折线图 -
创建 JPEG 图像
让我们重新编写上述示例,以从命令行生成 JPEG 图像。
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);
}
}
我们把上述 Java 代码放在 **LineChart.java** 文件中,然后从命令提示符中编译并运行,如下所示 -
$javac LineChart.java $java LineChart
如果一切正常,它将编译并执行,在当前目录中创建一个名为 **LineChart.jpeg** 的 JPEG 图像文件。
广告