利用JFreeChart生成区域图 (5) (转自 JSP开发技术大全)

14.5 利用JFreeChart生成区域图

通过JFreeChart插件只能生成普通效果的区域图,利用工厂类ChartFactory的createXYAreaChart()方法获得JFreeChart类的实例,在封装用来绘制区域图的数据时,既可以利用CategoryDataset数据集,也可以利用XYDataset数据集。

XYDataset数据集主要用来绘制与日期相关的统计图,这种统计图的横轴通常为日期标度,纵轴为数值标度,JFreeChart提供了格式化坐标轴标度的功能;在格式化横轴的日期标度时,可以通过java.text.SimpleDateFormat类格式化日期的输出格式,SimpleDateFormat类继承于java.text.DateFormat类。例如,通过下面的代码可以将日期和时间进行格式化:

DateFormat dateFormatDA = new SimpleDateFormat("yyyy-MM-dd");     // 年以4位显示

DateFormat dateFormatDB = new SimpleDateFormat("yy-MM-dd");       // 年以2位显示

DateFormat dateFormatTA = new SimpleDateFormat("HH:MM:SS");       // 24小时的形式显示

DateFormat dateFormatTB = new SimpleDateFormat("HH:MM:SS a");    // 12小时的形式显示

    说明:这里只是给出了几个典型的格式化方式,读者可以在此基础上举一反三。

还可以通过org.jfree.chart.axis.DateTickUnit类定义日期标度的单位和间隔,其中一个构造函数的定义如下:

DateTickUnit(int unit, int count, DateFormat formatter)

参数说明

l     unit:日期标度的统计单位。

l     count:日期标度的输出间隔。

l     formatter:日期标度的格式化方式。

在格式化纵轴的数值标度时,可以通过java.text.DecimalFormat类格式化数值的输出格式,例如可以将数值进行如下格式化:

DecimalFormat decimalFormat = new DecimalFormat("0.00");     // 保留小数点后两位

DecimalFormat decimalFormat = new DecimalFormat("0%");        // 以百分比的形式输出

    说明:这里只是给出了几个典型的格式化方式,读者可以在此基础上举一反三。

还可以通过org.jfree.chart.axis.NumberTickUnit类定义数值标度的间隔,其中一个构造函数的定义如下:

NumberTickUnit(double size, NumberFormat formatter)

参数说明

l     size:数值标度的输出间隔。

l     formatter:日期标度的格式化方式。

 示例14-05 每日股票走势区域图分析

下面来看一个绘制区域图的例子,该例绘制的区域图效果如图14.8所示。

图14.8 每日股票走势区域图分析

代码14-05 光盘位置:光盘\mingrisoft\14\sl\05

定义日期轴,每隔两小时输出一个标记,代码如下:

DateAxis domainAxis = new DateAxis("统计时间" + date);

DateFormat dateFormat = new SimpleDateFormat("HH");

DateTickUnit unit = new DateTickUnit(DateTickUnit.HOUR, 2, dateFormat);

domainAxis.setTickUnit(unit);

plot.setDomainAxis(domainAxis);

定义数值轴,以百分比的形式输出,并且每隔5个百分比输出一个标记,代码如下:

NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

DecimalFormat decimalFormat = new DecimalFormat("0%");

NumberTickUnit ntu = new NumberTickUnit(0.05, decimalFormat);

rangeAxis.setTickUnit(ntu);

 

最新文章

  1. 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]
  2. Android 笔记 AutoCompleteTextView day8
  3. 转-decorators.xml的用法-http://blog.csdn.net/gavinloo/article/details/7458062
  4. echo选项
  5. Threejs 使用的3D格式
  6. linux包之coreutils之du和df命令
  7. 【CocoaPods】配置CocoaPods前 - 本地安装好Ruby环境
  8. HDU5088——Revenge of Nim II(高斯消元&矩阵的秩)(BestCoder Round #16)
  9. Codeforces Gym 100418J Lucky tickets 数位DP
  10. 手机端H5点击类目自动定位到相应内容
  11. canvas.toDataURL(type, args)
  12. [linux]ubuntu14.04通过apt-get安装软件失败
  13. 【Hook技术】实现从"任务管理器"中保护进程不被关闭 + 附带源码 + 进程保护知识扩展
  14. 设计模式08---设计模式之抽象工厂模式(Abstract Factory)
  15. The Linux Storage Stack Diagram 内核 4.0 版的 I/O 栈
  16. jenkins新建slave
  17. React Native Android开发环境配置
  18. pheatmap, gplots heatmap.2和ggplot2 geom_tile实现数据聚类和热图plot
  19. Requests+正则表达式抓取猫眼电影TOP100
  20. JSHFJK师德师风幅度十分时尚大方JSHFJK

热门文章

  1. [Usaco2009 Nov]lights(高斯消元)
  2. sed输出指定行
  3. jQuery对table排序
  4. UvaLive 4872 Underground Cables (最小生成树)
  5. I2C详细介绍
  6. NYOJ-58最少步数,广搜思想!
  7. hihoCoder#1062 最近公共祖先·
  8. [luoguP1082] 同余方程(扩展欧几里得)
  9. Django开发:(1)django基础 & url控制器
  10. docker容器-快速部署Jenkins