利用JFreeChart生成区域图

来源:互联网 发布:flash cs6软件下载 编辑:程序博客网 时间:2024/04/30 05:57
 

通过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)

参数说明

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

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

ll     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)

参数说明

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

ll     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);

原创粉丝点击