• JFreeChart生成饼形图(3)11 (转自 JSP开发技术大全)


    FreeChart生成饼形图(3) (转自 JSP开发技术大全)

    14.3 利用JFreeChart生成饼形图

    通过JFreeChart插件,即可以生成普通效果的饼形图,也可以生成3D效果的饼形图;如果想生成普通效果的饼形图,需要通过工厂类ChartFactory的createPieChart()方法获得JFreeChart类的实例,如果想生成3D效果的饼形图,需要通过工厂类ChartFactory的createPieChart3D()方法获得JFreeChart类的实例,这两个方法的入口参数是完全相同的,各个入口参数的类型及功能如表14.3所示。

    表14.3                                      绘制饼形图方法的入口参数类型及功能

    参 数 序 号

    入 口 参 数

    参 数 功 能

    1

    String title

    图表标题

    2

    PieDataset dataset

    绘图数据集

    3

    boolean legend

    用于设定是否显示图例

    4

    boolean tooltips

    用于设定是否采用标准生成器

    5

    boolean urls

    用于设定是否包生成链接

    绘制饼形图时,需要通过DefaultPieDataset数据集封装数据,该数据集中的每一个元素是由一组键值对组成的,这与Map集合有些类似,DefaultPieDataset数据集通过setValue()方法添加数据,setValue()方法有两个重载方法,均有两个入口参数,并且每个参数的含义是相同的,第一个入口参数为图例名称,第二个入口参数统计数据,它们的具体定义如下:

    public void setValue(Comparable key, Number value) {

        this.data.setValue(key, value);

        fireDatasetChanged();

    }

    public void setValue(Comparable key, double value) {

        setValue(key, new Double(value));

    }

    可以通过绘图区对象PiePlot的setForegroundAlpha(float alpha)方法,实现饼图的透明效果,入口参数alpha的取值范围在0.0和1.0之间,当为0.0时,将不显示饼图,当为1.0时,则不存在透明效果,当超出该范围时,将抛出如下异常:

    java.lang.IllegalArgumentException: alpha value out of range

     示例14-03 编程类图书年销售额百分比饼形图分析

    下面来看一个绘制饼形图的例子,该例绘制的饼形图效果如图14.4和图14.5所示。

                

                  图14.4 普通效果的饼形图                              图14.5 3D效果的饼形图

    代码14-03 光盘位置:光盘mingrisoft14sl3

    本示例使用的模拟绘图数据如下:

    String[] cutline;     // 图例

    Double[] data;     // 绘图数据

    this.cutline = new String[] { "ASP", "JSP", "PHP", "Hibernate", "Spring", "数据库" };

    this.data = new Double[cutline.length];

    for (int i = 0; i < data.length; i++) {

        data[i] = 1 + Math.random() * 100;

    }

    创建DefaultPieDataset数据集的代码如下:

    DefaultPieDataset dataset = new DefaultPieDataset();

    for (int i = 0; i < cutline.length; i++) {

        dataset.setValue(cutline[i], data[i]);

    }

    创建绘制3D效果饼形图的JFreeChart实例,代码如下:

    JFreeChart chart = ChartFactory.createPieChart3D(chartTitle,      // 图表标题

           dataset,      // 绘图数据集

           False,      // 设定是否显示图例

           False,     // 设定是否显示图例名称

           False);     // 设定是否生成链接

    *    说明:这里绘制的是图14.5所示的3D效果图,如果想绘制图14.4所示的普通效果图,只需将createPieChart3D()方法改为createPieChart()方法。

    当需要在图片上显示中文时,建议不要使用反锯齿功能,这样能够保证汉字的清晰度,代码如下:

    chart.setAntiAlias(False);

    可以自行定义图表标题的字体、样式、大小和颜色等,代码如下:

    TextTitle title = chart.getTitle();

    title.setFont(new Font("汉真广标", Font.BOLD, 21));

    title.setPaint(Color.RED);

    下面通过绘图区对象设置饼状图的绘制方向,可以按顺时针方向绘制,也可以按逆时针方向绘制,以及开始绘制第一段圆弧的角度,关键代码如下:

    plot.setDirection(Rotation.ANTICLOCKWISE);

    plot.setStartAngle(90);

    可以设置饼形图的外观效果,例如圆形(True)或椭圆形(False),默认为圆形,建议在绘制3D效果图时将其设为False,关键代码如下;

    plot.setCircular(False);

    下面让饼形图实现透明效果,代码如下:

    plot.setForegroundAlpha(0.8f);

  • 相关阅读:
    IntelliJ Idea 2017 免费激活方法
    RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
    Oracle锁的机制
    序列化和持久化的区别
    Hibernate框架之get和load方法的区别
    Hibernate框架之入门案例
    Oracle添加数据报文字与格式字符串不匹配错误
    Linux设备驱动程序 之 异步通知
    Linux设备驱动程序 之 poll和select
    Linux设备驱动程序 之 休眠
  • 原文地址:https://www.cnblogs.com/meimao5211/p/3262036.html
Copyright © 2020-2023  润新知