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、运行结果

  • 相关阅读:
    邻接矩阵有向图的介绍
    Oracle库Delete删除千万以上普通堆表数据的方法
    Oracle 11g静默安装软件+手工创建数据库
    Oracle基础维护02-表、主键、索引、表结构维护手册
    批处理:Windows主机通过FTP下载远程Linux主机上文件
    Vertica license导入最佳实践
    各类数据库问题描述模板
    Oracle同义词+dblink的实际应用
    Oracle数据逻辑迁移综合实战篇
    Greenplum 数据库安装部署(生产环境)
  • 原文地址:https://www.cnblogs.com/zfc-java/p/8137410.html
Copyright © 2011-2022 走看看