zoukankan      html  css  js  c++  java
  • 如何使用Jfreechart生成柱状图?

    JFreeChart是JAVA平台上的一个开放的图表绘制类库。

    首先 (http://www.jfree.org /jfreechart) 总这个网址下载所需要的库,然后解压,放在某个地方。 我们默认的环境是eclipse。

    选择项目右键--.>选择BuildPath 然后点击Configure Build Path

    在出现的界面右侧 选择 Add External JARs

    找到你下载的库打开lib,将所有的jar文件添加进去。这时我们剩下要做的只有写代码。

    package jfreechart;
    
    import java.awt.Font;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    
    public class Jfreechartcanshu {
      public static void main(String[] args) throws IOException {
        final CategoryDataset ds = getDataSet();
        final JFreeChart chart = ChartFactory.createBarChart3D("按参数的吞吐率和公平性", // 图表标题
            "每次生成猴子个数", // 目录轴的显示标签
            "数值", // 数值轴的显示标签
            ds, // 数据集
            PlotOrientation.VERTICAL, // 图表方向
            true, // 是否显示图例,对于简单的柱状图必须为false
            false, // 是否生成提示工具
            false); // 是否生成url链接
    
        final CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();
    
        final NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
    
        final CategoryAxis domainAxis = categoryplot.getDomainAxis();
    
        /*------设置X轴坐标上的文字-----------*/
        domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));
    
        /*------设置X轴的标题文字------------*/
        domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));
    
        /*------设置Y轴坐标上的文字-----------*/
        numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));
    
        /*------设置Y轴的标题文字------------*/
        numberaxis.setLabelFont(new Font("黑体", Font.PLAIN, 12));
    
        /*------这句代码解决了底部汉字乱码的问题-----------*/
        chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
    
        /******* 这句代码解决了标题汉字乱码的问题 ********/
        chart.getTitle().setFont(new Font("宋体", Font.PLAIN, 12));
    
        FileOutputStream out = null;
        try {
          out = new FileOutputStream("./src/Monkey/chart参数.jpg");
          ChartUtilities.writeChartAsJPEG(out, 0.5f, chart, 400, 300, null);
        } finally {
          try {
            out.close();
          } catch (final Exception ex) {
            ex.printStackTrace();
          }
        }
      }
    
      private static CategoryDataset getDataSet() {
        final DefaultCategoryDataset ds = new DefaultCategoryDataset();
        ds.addValue(1.11, "吞吐率", "K=2");
        ds.addValue(0.72, "公平性", "K=2");
        ds.addValue(1.17, "吞吐率", "K=4");
        ds.addValue(0.60, "公平性", "K=4");
        ds.addValue(1.53, "吞吐率", "K=6");
        ds.addValue(0.65, "公平性", "K=6");
        ds.addValue(1.66, "吞吐率", "K=8");
        ds.addValue(0.53, "公平性", "K=8");
        ds.addValue(1.34, "吞吐率", "K=10");
        ds.addValue(0.65, "公平性", "K=10");
        return ds;
      }
    }

    这时一个样板,运行后 会在目录下生成.jpg文件,是一个柱状图,改动时只需要将X,Y轴的数值,文字改变。其他的可根据需要进行变动,这样就生成了一个jfreechart图表。我自己运行的结果如下:

  • 相关阅读:
    [bzoj1008](HNOI2008)越狱(矩阵快速幂加速递推)
    [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)
    [bzoj1006](HNOI2008)神奇的国度(弦图最小染色)【太难不会】
    [BZOJ1005](HNOI 2008)明明的烦恼
    unity3d环境安装指南: Unity 4.5.5 + Visual Studio 2010
    再议Unity 3D
    Android系统简介(中):系统架构
    Android系统简介(上):历史渊源
    Spread 之自定义对角线cellType源码: DiagonalCellType
    通信行业OSS支撑系统软件研发思考
  • 原文地址:https://www.cnblogs.com/hitszbw/p/9162446.html
Copyright © 2011-2022 走看看