zoukankan      html  css  js  c++  java
  • 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.awt.Rectangle;
     5 import java.io.File;
     6 import java.io.IOException;
     7 
     8 import org.jfree.chart.ChartFactory;
     9 import org.jfree.chart.ChartFrame;
    10 import org.jfree.chart.ChartUtilities;
    11 import org.jfree.chart.JFreeChart;
    12 import org.jfree.chart.axis.CategoryAxis;
    13 import org.jfree.chart.axis.NumberAxis;
    14 import org.jfree.chart.axis.NumberTickUnit;
    15 import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
    16 import org.jfree.chart.plot.CategoryPlot;
    17 import org.jfree.chart.plot.PlotOrientation;
    18 import org.jfree.chart.renderer.category.LineAndShapeRenderer;
    19 import org.jfree.data.category.DefaultCategoryDataset;
    20 
    21 /**
    22  * 使用 JFreeChart 技术画折线图
    23  * 
    24  * @describe
    25  * @author zfc
    26  * @date 2017年12月28日 下午7:21:51
    27  */
    28 public class LineChart {
    29     public static void main(String[] args) {
    30         DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    31         // 添加数据
    32         dataset.addValue(98, "数学", "张三");
    33         dataset.addValue(68, "数学", "李四");
    34         dataset.addValue(56, "数学", "王五");
    35         JFreeChart chart = ChartFactory.createLineChart("用户统计报表(所属单位)", // 主标题的名称
    36                 "所属单位名称", // X轴的标签
    37                 "数量", // Y轴的标签
    38                 dataset, // 图标显示的数据集合
    39                 PlotOrientation.VERTICAL, // 图像的显示形式(水平或者垂直)
    40                 true, // 是否显示子标题
    41                 true, // 是否生成提示的标签
    42                 true); // 是否生成URL链接 // 处理图形上的乱码 // 处理主标题的乱码
    43         chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18));
    44         // 处理子标题乱码
    45         chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15));
    46         // 获取图表区域对象
    47         CategoryPlot categoryPlot = (CategoryPlot) chart.getPlot();
    48         // 获取X轴的对象
    49         CategoryAxis categoryAxis = (CategoryAxis) categoryPlot.getDomainAxis();
    50         // 获取Y轴的对象
    51         NumberAxis numberAxis = (NumberAxis) categoryPlot.getRangeAxis();
    52         // 处理X轴上的乱码
    53         categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    54         // 处理X轴外的乱码
    55         categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
    56         // 处理Y轴上的乱码
    57         numberAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 15));
    58         // 处理Y轴外的乱码
    59         numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 15));
    60         // 处理Y轴上显示的刻度,以10作为1格
    61         numberAxis.setAutoTickUnitSelection(false);
    62         NumberTickUnit unit = new NumberTickUnit(10);
    63         numberAxis.setTickUnit(unit);
    64         // 获取绘图区域对象
    65         LineAndShapeRenderer lineAndShapeRenderer = (LineAndShapeRenderer) categoryPlot.getRenderer();
    66         // 在图形上显示数字
    67         lineAndShapeRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    68         lineAndShapeRenderer.setBaseItemLabelsVisible(true);
    69         lineAndShapeRenderer.setBaseItemLabelFont(new Font("宋体", Font.BOLD, 15));
    70         // 在图形上添加转折点(使用小矩形显示)
    71         Rectangle shape = new Rectangle(10, 10);
    72         lineAndShapeRenderer.setSeriesShape(0, shape);
    73         lineAndShapeRenderer.setSeriesShapesVisible(0, true);
    74         /* 8、生成相应的图片 */
    75         File file = new File("LineChart.JPEG");
    76         try {
    77             ChartUtilities.saveChartAsJPEG(file, chart, 800, 600);
    78         } catch (IOException e) {
    79             e.printStackTrace();
    80         }
    81         // 使用ChartFrame对象显示图像
    82         ChartFrame frame = new ChartFrame("zfc", chart);
    83         frame.setVisible(true);
    84         frame.pack();
    85     }
    86 }

    3、运行结果

  • 相关阅读:
    智能移动机器人背后蕴含的技术——激光雷达
    Kalman Filters
    Fiddler抓HttpClient的包
    VSCode开发WebApi EFCore的坑
    WPF之小米Logo超圆角的实现
    windows react打包发布
    jenkins in docker踩坑汇总
    Using ML.NET in Jupyter notebooks 在jupyter notebook中使用ML.NET ——No design time or full build available
    【Linux知识点】CentOS7 更换阿里云源
    【Golang 报错】exec gcc executable file not found in %PATH%
  • 原文地址:https://www.cnblogs.com/zfc-java/p/8137410.html
Copyright © 2011-2022 走看看