## 7.3 使用XYDataset数据集创建折线图
### 7.3.1 概述
折线图也可以使用XYDataset数据集,使用一条直线将相邻的点(x,y)点连接起来。本章介绍的一个使用XYDataset数据集创建折线图的简单实例,如下图7.2所示。
![](https://box.kancloud.cn/2016-01-23_56a34084c9f8b.png)
图7.2 一个简单的基于XYDataset数据集的折线图(参考:LineChartDemo2.java)
### 7.3.2 XYDataset
对于该图表来说,使用的数据集是XYSeriesCollection(当然我们可以使用实现XYDataset接口的其他数据集)。出于独立演示的目点,我们创建的dataset代码如下:
```
private static XYDataset createDataset() {
XYSeries xyseries = new XYSeries("First");
xyseries.add(1.0, 1.0);
xyseries.add(2.0, 4.0);
xyseries.add(3.0, 3.0);
xyseries.add(4.0, 5.0);
xyseries.add(5.0, 5.0);
xyseries.add(6.0, 7.0);
xyseries.add(7.0, 7.0);
xyseries.add(8.0, 8.0);
XYSeries xyseries_0_ = new XYSeries("Second");
xyseries_0_.add(1.0, 5.0);
xyseries_0_.add(2.0, 7.0);
xyseries_0_.add(3.0, 6.0);
xyseries_0_.add(4.0, 8.0);
xyseries_0_.add(5.0, 4.0);
xyseries_0_.add(6.0, 4.0);
xyseries_0_.add(7.0, 2.0);
xyseries_0_.add(8.0, 1.0);
XYSeries xyseries_1_ = new XYSeries("Third");
xyseries_1_.add(3.0, 4.0);
xyseries_1_.add(4.0, 3.0);
xyseries_1_.add(5.0, 2.0);
xyseries_1_.add(6.0, 3.0);
xyseries_1_.add(7.0, 6.0);
xyseries_1_.add(8.0, 3.0);
xyseries_1_.add(9.0, 4.0);
xyseries_1_.add(10.0, 3.0);
XYSeriesCollection xyseriescollection = new XYSeriesCollection();
xyseriescollection.addSeries(xyseries);
xyseriescollection.addSeries(xyseries_0_);
xyseriescollection.addSeries(xyseries_1_);
return xyseriescollection;
}
```
注意:每个系列必须有x值(不是必须有y值),并且该系列独立于其他系列。数据集可以接受一个y值为null的值。当图表遇到null值时,连接线不被画出,该系列的连线不会连续。出现下图7.3类型。
![](https://box.kancloud.cn/2016-01-23_56a34084da1db.png)
图7.3有一个 y值为null时,图表显示断续。
### 7.3.3 创建图表
ChartFactory类提供了一个便利的方法createXYLineChart()创图表:
```
JFreeChart jfreechart = ChartFactory.createXYLineChart(
"Line Chart Demo 2", // chart title
"X", // x axis label
"Y", // y axis label
xydataset, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);
```
上面方法构建了一个JFreeChart对象,该对象具有一个标题、图例和相关轴的图区及renderer。数据集使用上节我们创建的数据集。
### 7.3.4 定制图表
图表将使用大部分缺省的属性进行初始化设置。当然了,我们也可以随意修改这些属性,来改变我们图表的外观。在本实例中,设置的几个属性如下:
+ 设置图表的背景颜色
+ 设置图区的背景颜色
+ 设置轴的平移值
+ 设置主轴和范围轴网格线颜色
+ 修改renderer改变连线点的形状
+ 范围轴刻度的设置,以便显示整数值。
改变图表背景颜色非常简单。代码如下:
```
//改变图表的背景颜色
jfreechart.setBackgroundPaint(Color.white);
```
改变图区背景颜色、轴平移、网格线颜色,需要使用plot图区对象的一个引用来修改。图片对象需要转化成XYPlot对象,主要是因为我们可以访问更多更具体的图区方法。代码如下:
```
XYPlot xyplot = (XYPlot) jfreechart.getPlot();
xyplot.setBackgroundPaint(Color.lightGray);
xyplot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
xyplot.setDomainGridlinePaint(Color.white);
xyplot.setRangeGridlinePaint(Color.white);
```
修改renderer来显示连线之间的形状。代码如下:
```
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyplot.getRenderer();
xylineandshaperenderer.setShapesVisible(true);
xylineandshaperenderer.setShapesFilled(true);
```
最后就是修改范围轴。我们将默认刻度值(允许显示小数)改成只显示整数的刻度值。代码如下:
```
NumberAxis numberaxis = (NumberAxis) xyplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
```
参考源代码、Javadoc的API文档以及其他相关XYPlot的定制内容,来学习更多的细节。
- 1 简介
- 1.1 什么是JFreeChart
- 1.2 使用文档
- 1.3 感谢
- 1.4 建议
- 2 图表实例
- 2.1 介绍
- 2.2 饼图(Pie Charts)
- 2.3 直方条形图(Bar Charts)
- 2.4 折线图(Line Charts)
- 2.5 XY(散点图)
- 2.6 时序图
- 2.7 柱状图
- 2.8 面积图
- 2.9 差异图
- 2.10 梯形图
- 2.11 甘特图
- 2.12 多轴图
- 2.13 复合/覆盖图
- 2.14 开发远景
- 3 下载和安装JFreeChart 1.0.6
- 3.1 简介
- 3.2 下载
- 3.3 解包
- 3.4 运行演示实例
- 3.5 编译源代码
- 3.6 产生javadoc文档
- 4 使用JFreeChart1.0.6
- 4.1 概述
- 4.2 创建第一个图表
- 5 饼图(Pie Charts)
- 5.1 简介
- 5.2 创建一个简单的饼图(Pie Charts)
- 5.3 片区颜色
- 5.4 片区外廓
- 5.5 空置、零值和负值
- 5.6 片区和图例标签
- 5.7 “取出”某个片区
- 5.8 3D饼图
- 5.9 多饼图
- 5.10 实例讲解
- 6 直方条形图(Bar Charts)
- 6.1 简介
- 6.2 创建一个直方条形图
- 6.3 ChartFactory类
- 6.4 直方条形图的简单定制
- 6.5 定制外观
- 6.6 示例代码解读
- 7 折线图
- 7.1 简介
- 7.2 使用categoryDataset数据集创建折线图
- 7.3 使用XYDataset数据集创建折线图
- 8 时序图
- 8.1 简介
- 8.2 创建时序图
- 9 定制图表(Customising Charts)
- 9.1 简介
- 9.2 图表属性
- 9.3 图区属性
- 9.4 轴属性
- 9.5 心得体会
- 10 动态图(Dynamic Charts)
- 10.1 简介
- 10.2 知识背景
- 10.3 实例应用
- 11 图表工具条(Tooltips)
- 11.1 概述
- 11.2 创建图表工具条
- 11.3 收集图表工具条
- 11.4 显示图表工具条
- 11.5 隐藏图表工具条
- 11.6 定制图表工具条
- 12 图表条目标签(Item Label)
- 12.1 简介
- 12.2 显示条目标签
- 12.3 条目标签外观
- 12.4 条目标签位置
- 12.5 定制条目标签文本
- 12.6 实例1
- 12.7 实例2
- 13 多轴和数据源图表(Multi Axis and Dataset)
- 13.1 简介
- 13.2 实例
- 13.3 建议和技巧
- 14 组合图表(Combined Charts)
- 14.1 简介
- 14.2 组合X种类图区
- 14.3 组合Y种类图区
- 14.4 组合X-XY图区
- 14.5 组合Y-XY图区
- 15 数据源和JDBC(Dataset And JDBC)
- 15.1 简介
- 15.2 关于JDBC
- 15.3 样本数据
- 15.4 PostgreSQL
- 15.5 JDBC驱动
- 15.6 应用演示
- 16 导出图表为PDF格式
- 16.1 简介
- 16.2 什么是Acrobat PDF
- 16.3 IText
- 16.4 Graphics2D
- 16.5 开始导出
- 16.6 实例应用
- 16.7 查看PDF 文件
- 16.8 Unicode字符问题
- 17 导出图表为SVG格式
- 17.1 简介
- 17.2 背景
- 17.3 实例代码
- 18 Applet
- 18.1 简介
- 18.2 问题
- 18.3 实例应用
- 19 Servlets
- 19.1 介绍
- 19.2 编写一个简单的Servlet应用
- 19.3 编译实例Servlet
- 19.4 部署实例Servlet
- 19.5 在HMTL页面种嵌入图表
- 19.6 支持文件
- 19.7 部署Servlets
- 20 JFreeChart相关技术
- 20.1 简介
- 20.2 X11/Headless Java
- 20.3 JSP
- 20.4 加载图片
- 21 包
- 21.1 概述