如何使用Jfreechart生成柱状图?

Posted hitszbw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用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图表。我自己运行的结果如下:

技术分享图片

 

以上是关于如何使用Jfreechart生成柱状图?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用jfreechart生成柱状,饼状,折线形图形。

JFreeChart的使用

JFreeChart 之柱状图

jfreechart柱状图+折线图

JFreeChart如何实现柱状图 一个柱子有多段数据

JFreeChart