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


    利用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 光盘位置:光盘mingrisoft14sl5

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

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

     
  • 相关阅读:
    数据库的单表查询Ⅰ
    数据库的基本操作Ⅲ
    数据库基本操作Ⅱ
    数据库的基本操作Ⅰ
    MYSQL的三种安装方式
    操作系统学期小结二
    操作系统学期小结一
    MAP接口课堂练习
    关于list接口和set接口的示例应用
    课堂作业整理三 (集合:list接口)
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3262042.html
Copyright © 2020-2023  润新知