• JFreeChart 之柱状图


    JFreeChart 之柱状图

    一、JFreeChart 简介

      JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。

    二、JFreeChart 的使用

      官方网站:http://www.jfree.org/

      下载地址:https://sourceforge.net/projects/jfreechart/files/1.%20JFreeChart/

    1、拷贝相关的 Jar (jcommon-1.0.23.jar和jfreechart-1.0.19.jar)到 Java 项目中

    2、柱状图示例(LineChart.java

     1 package cn.com.zfc.jfreechart;
     2 
     3 import java.awt.Font;
     4 import java.io.File;
     5 import java.io.IOException;
     6 
     7 import org.jfree.chart.ChartFactory;
     8 import org.jfree.chart.ChartFrame;
     9 import org.jfree.chart.ChartUtilities;
    10 import org.jfree.chart.JFreeChart;
    11 import org.jfree.chart.axis.CategoryAxis3D;
    12 import org.jfree.chart.axis.NumberAxis3D;
    13 import org.jfree.chart.axis.NumberTickUnit;
    14 import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    15 import org.jfree.chart.plot.CategoryPlot;
    16 import org.jfree.chart.plot.PlotOrientation;
    17 import org.jfree.chart.renderer.category.BarRenderer3D;
    18 import org.jfree.data.category.DefaultCategoryDataset;
    19 
    20 /**
    21  * @describe 使用 JFreeChart 技术画柱状图
    22  * @author zfc
    23  * @date 2017年12月27日 下午4:03:56
    24  */
    25 public class BarChart3D {
    26     public static void main(String[] args) {
    27         /* 1、数据集对象 DefaultCategoryDataset */
    28         DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    29         /* 2、数据集对象 DefaultCategoryDataset 中添加数据 */
    30         dataset.addValue(98, "数学", "张三");
    31         dataset.addValue(87, "语文", "张三");
    32         dataset.addValue(68, "数学", "李四");
    33         dataset.addValue(89, "语文", "李四");
    34         dataset.addValue(56, "数学", "王五");
    35         dataset.addValue(96, "语文", "王五");
    36         /* 3、创建图形对象 JFreeChart:主标题的名称,图标显示的数据集合,是否显示子标题,是否生成提示的标签,是否生成URL链接 */
    37         JFreeChart chart = ChartFactory.createBarChart3D("成绩统计表", "学生姓名", "分数", dataset, PlotOrientation.VERTICAL, true,
    38                 true, true);
    39         /* 4、处理乱码 */
    40         // 处理主标题的乱码
    41         chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
    42         // 处理子标题乱码
    43         chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
    44         /* 5、获取图表区域对象 CategoryPlot */
    45         CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
    46         // 获取X轴的对象
    47         CategoryAxis3D categoryAxis3D = (CategoryAxis3D) categoryPlot.getDomainAxis();
    48         // 获取Y轴的对象
    49         NumberAxis3D numberAxis3D = (NumberAxis3D) categoryPlot.getRangeAxis();
    50         // 处理X轴上的乱码
    51         categoryAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    52         // 处理X轴外的乱码
    53         categoryAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
    54         // 处理Y轴上的乱码
    55         numberAxis3D.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    56         // 处理Y轴外的乱码
    57         numberAxis3D.setLabelFont(new Font("宋体", Font.BOLD, 15));
    58         // 处理Y轴上显示的刻度,以10作为1格
    59         numberAxis3D.setAutoTickUnitSelection(false);
    60         NumberTickUnit unit = new NumberTickUnit(10);
    61         numberAxis3D.setTickUnit(unit);
    62         // 获取绘图区域对象
    63         BarRenderer3D barRenderer3D = (BarRenderer3D) categoryPlot.getRenderer();
    64         // 设置柱形图的宽度
    65         barRenderer3D.setMaximumBarWidth(0.07);
    66         // 在图形上显示数字
    67         barRenderer3D.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    68         barRenderer3D.setBaseItemLabelsVisible(true);
    69         barRenderer3D.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
    70 
    71         /* 8、生成相应的图片 */
    72         File file = new File("I:/BarChart3D.JPEG");
    73         try {
    74             ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
    75         } catch (IOException e) {
    76             e.printStackTrace();
    77         }
    78 
    79         // 使用ChartFrame对象显示图像
    80         ChartFrame frame = new ChartFrame("zfc", chart);
    81         frame.setVisible(true);
    82         frame.pack();
    83     }
    84 }

    3、运行结果

  • 相关阅读:
    互联网协议入门
    【HTTP】图解HTTPS
    《计算机本科生理想的学习计划》
    VC++ TinyXML
    TinyXML 在vs2010 VC++使用
    Hadoop2.4.1入门实例:MaxTemperature
    xcode6
    Android利用广播监听设备网络连接(断网)的变化情况
    编程算法
    Google的Guava之IO升华
  • 原文地址:https://www.cnblogs.com/zfc-java/p/8137424.html
Copyright © 2020-2023  润新知