- 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 图像文件。
广告