利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)
利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)
实例位置:光盘\mingrisoft\14\dxyy\02
通过JFreeChart插件还可以生成拥有多个绘图区的图表,简称组合图表,在生成组合图表时,必须通过绘图区对象,因为JFreeChart允许向绘图区对象中添加子绘图区对象。
下面是一个组合图表的典型应用,下面将以此讲解组合图表的具体生成方法。
分析一下图14.11中的两个绘图区,每个绘图区拥有各自的X轴,该图左侧的Y轴为两个绘图区共用的Y轴,使用该Y轴的图例有“涨幅百分比”和“今日涨幅之最”,图例“今日股价之最”使用右侧的Y轴,右侧的Y轴为右侧绘图区的附加轴,生成原理同14.7节,然后看一下图14.11的具体生成方法。
该典型应用生成的组合图表的效果如图14.11所示。

图14.11 利用JFreeChart生成组合图表
程序实现过程如下。
(1)首先定义右侧子绘图区,代码如下:
// 创建一个绘图区对象
XYPlot plot1 = new XYPlot();
// 定义独立的X轴
DateAxis axis1 = new DateAxis("今日之最");
DateTickUnit unit1 = new DateTickUnit(DateTickUnit.HOUR, 1, new SimpleDateFormat("HH"));
axis1.setTickUnit(unit1);
plot1.setDomainAxis(axis1);
// 因为共用Y轴,所以将其设为空
plot1.setRangeAxis(null);
// 设定绘图数据集,数据集在前面已经封装完毕,这里不再详细介绍
plot1.setDataset(dataset1);
// 定义绘图风格
XYLineAndShapeRenderer xyArea1 = new XYLineAndShapeRenderer();
plot1.setRenderer(xyArea1);
(2)在右侧的绘图区中添加一个附加轴,用来统计股票的具体价格,代码如下:
// 创建附加轴对象,并添加到绘图区
ValueAxis axis11 = new NumberAxis("股票价格(单位:元 / 股)");
axis11.setUpperBound(30.0); // 设置Y轴最大值
axis11.setLowerBound(10.0); // 设置Y轴最小值
plot1.setRangeAxis(1, axis11);
// 创建与附加轴对应的数据集,并添加到绘图区
TimeSeries timeSeries11 = new TimeSeries("今日股价之最", Minute.class);
timeSeries11.add(startMinute, yesterdayValue);
timeSeries11.add(minMinute, yesterdayValue + yesterdayValue * minPercent);
timeSeries11.add(maxMinute, yesterdayValue + yesterdayValue * maxPercent);
timeSeries11.addOrUpdate(endMinute, yesterdayValue + yesterdayValue * endPercent);
IntervalXYDataset dataset11 = new TimeSeriesCollection(timeSeries11);
plot1.setDataset(1, dataset11);
// 将绘图数据集映射到附加轴上
plot1.mapDatasetToRangeAxis(1, 1);
// 定义附加轴的绘图风格,这里为折线
XYLineAndShapeRenderer xyArea11 = new XYLineAndShapeRenderer();
plot1.setRenderer(1, xyArea11);
(3)定义左侧子绘图区,代码如下:
// 创建一个绘图区对象
XYPlot plot2 = new XYPlot();
// 定义独立的X轴
DateAxis axis2 = new DateAxis("统计时间");
DateTickUnit unit2 = new DateTickUnit(DateTickUnit.MINUTE, 30,
new SimpleDateFormat("HH:mm"));
axis2.setTickUnit(unit2);
plot2.setDomainAxis(axis2);
// 因为共用Y轴,所以将其设为空
plot2.setRangeAxis(null);
// 设定绘图数据集,数据集在前面已经封装完毕,这里不再详细介绍
plot2.setDataset(dataset2);
// 定义绘图风格
XYAreaRenderer xyArea2 = new XYAreaRenderer();
plot2.setRenderer(xyArea2);
(4)定义父绘图区,代码如下:
// 创建一个绘图区对象
CombinedRangeXYPlot plot = new CombinedRangeXYPlot();
// 定义共用坐标轴
NumberAxis axis = new NumberAxis("股票涨幅百分比");
axis.setTickUnit(new NumberTickUnit(0.025,new DecimalFormat("0.0%")));//定义度量值风格
plot.setRangeAxis(axis);
// 添加子绘图区
plot.add(plot2, 5);
plot.add(plot1, 2);
说明:在通过绘图区对象的add()方法添加子绘图区对象时,第一个入口参数为欲添加的子绘图区对象,第二个入口参数为该绘图区所占的比例,上面代码的意思是plot2占5/7,plot1占2/7,还需要注意的是,绘图区从左到右的排列顺序是由添加子绘图区的先后顺序决定的。
下面的代码是通过上面的父绘图区对象生成图表,并获得浏览路径:
// 创建图表
JFreeChart chart = new JFreeChart(chartTitle, plot);
// 添加图表副标题
chart.addSubtitle(new TextTitle(subtitle));
// 固定用法
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
// 生成指定格式的图片,并返回图片名称
String fileName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);
// 返回图片浏览路径
return servletURI + "?filename=" + fileName;
至此,一个组合图表就绘制完成了,这里绘制的是共用Y轴的组合图表,同样也可以绘制出共用X轴的组合图表。
利用JFreeChart生成组合图表 (8) (转自 JSP开发技术大全)的更多相关文章
- 利用JFreeChart生成时序图(6) (转自 JSP开发技术大全)
利用JFreeChart生成时序图(6) (转自 JSP开发技术大全) 14.6 利用JFreeChart生成时序图 通过JFreeChart插件只能生成普通效果的时序图,利用工厂类ChartFact ...
- 利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)
利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全) 14.5 利用JFreeChart生成区域图 通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFac ...
- 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)
利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...
- JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)
FreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图:如 ...
- 利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全)
利用JFreeChart生成多轴图表(7) (转自 JSP开发技术大全) 14.7 利用JFreeChart生成多轴图表 通过JFreeChart插件还可以生成拥有多个坐标轴的图表,简称多轴图表.在生 ...
- JFreeChart生成饼形图(3) (转自 JSP开发技术大全)
JFreeChart生成饼形图(3) (转自 JSP开发技术大全) 14.3 利用JFreeChart生成饼形图 通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图: ...
- JFreeChart生成柱形图(2) (转自 JSP开发技术大全)
JFreeChart生成柱形图(2) (转自 JSP开发技术大全) 14.2 利用JFreeChart生成柱形图14.2.1 利用DefaultCategoryDataset数据集绘制柱形图 通过JF ...
- JFreeChart基础(1) (转自 JSP开发技术大全)
JFreeChart基础(1) (转自 JSP开发技术大全) JFreeChart是一个Java开源项目,是一款优秀的Java图表生成插件,它提供了在Java Application.Servlet和 ...
- 使用poi和jfreechart生成excel图表图片
最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的 ...
随机推荐
- git命令初级
git是开源的分布式版本控制系统,分布式主要区别于集中式代表CVS(Concurrent Version System,遵从C/S架构,同步比较笨拙.)和SVN(Subversion),linux开发 ...
- 性能测试培训day1
测试本质: 1构造测试数据和期望结果 2执行 3验证 自动化测试: 写完代码,单元测试测代码逻辑,单元测试搞清楚代码逻辑就行了(白盒测试)先静态,运行前用工具扫描BUG例如(a==11写成a=11), ...
- 树莓派2-SSH
树莓派3系统SSH是默认关闭的, 将SD卡插入linux, 在root 分区, 修改/etc/rc.local 在exit 0前增加一行 /ect/init.d/ssh start 将SD卡插回树莓派 ...
- ECNU 3263 丽娃河的狼人传说 (贪心)
链接:http://acm.ecnu.edu.cn/problem/3263/ 题意: 从 1 到 n 的一条数轴.有 m 个区间至少要安装一定数量的路灯,路灯只能装在整数点上,有k盏路灯已经安装好 ...
- vscode调试nodejs
1.安装nodejs 2.安装vscode 3.vscode安装debugger for chrome插件 4.新建nodejs-test文件夹,新建server.js空白文件,添加内容: var h ...
- git clone问题
中秋节回来上班 竟然忘记带电脑了  ̄□ ̄||还好同事有备用电脑,这要是回去拿估计上午都不用干什么了,用同事电脑当然需要安装环境,下面说一下git上遇到的问题吧 (1)首先我尝试用https方式克隆代码 ...
- MBP 2018 & Mac keyboard shortcuts
MBP 2018 & Mac keyboard shortcuts https://support.apple.com/en-us/HT201236 delete key === Contro ...
- 592. Fraction Addition and Subtraction
Problem statement: Given a string representing an expression of fraction addition and subtraction, y ...
- Codeforces713D. Animals and Puzzle
$n<=1000,m<=1000$,$n*m$的01矩阵,给$t<=1000000$个询问,每次问一个矩形中最大的1正方形的边长. 先想想不考虑“一个矩形中”的限制,那记$f(i,j ...
- HashSet源码分析2
package com.test1; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public ...