美文网首页
JFreeChart入门

JFreeChart入门

作者: 尚水杨 | 来源:发表于2020-08-03 21:41 被阅读0次

JFreeChart是一个开源的java语言编写的图表生成框架。支持生成饼图、条形图、折线图等相关图表。

示例代码

Maven依赖

<dependency>
   <groupId>org.jfree</groupId>
   <artifactId>jfreechart</artifactId>
   <version>1.5.0</version>
</dependency>

饼图

pie.png
package org.ysy.study.chart.pie;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class PieChartDemo1 {
    public static void main(String args[])throws Exception{
        DefaultPieDataset dataset=new DefaultPieDataset();
        dataset.setValue("Category 1",38.2);
        dataset.setValue("Category 2",36.2);
        dataset.setValue("Category 3",35.2);
        dataset.setValue("Category 4",3.2);
        //创建chart
        JFreeChart chart= ChartFactory.createPieChart(
          "Simple Pie Chart",//标题
                dataset,
                true,//显示legend
                true,//生成tooltips
                false//不成生成URLs
        );
        ChartFrame frame=new ChartFrame("DemoPie1",chart);
        frame.pack();
        frame.setVisible(true);
    }
}

条形图

bar0.png
package org.ysy.study.chart.bar;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.UIUtils;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import java.awt.*;


public class BarChartDemo0 extends ApplicationFrame {
    public BarChartDemo0(String title){
        super(title);
        CategoryDataset dataset=createDataset();
        JFreeChart chart=createChart(dataset);
        ChartPanel chartPanel=new ChartPanel(chart);
        chartPanel.setPreferredSize(new Dimension(800,340));
        setContentPane(chartPanel);
    }
    private CategoryDataset createDataset(){
        // row keys
        String series1="First";
        String series2="Second";
        String series3="Third";
        String series4="fourth";
        //column keys
        String category1="Category 1";
        String category2="Category 2";
        String category3="Category 3";
        String category4="Category 4";
        String category5="Category 5";

        DefaultCategoryDataset dataset=new DefaultCategoryDataset();

        dataset.addValue(1.0,series1,category1);
        dataset.addValue(2.0,series1,category2);
        dataset.addValue(3.0,series1,category3);
        dataset.addValue(4.0,series1,category4);
        dataset.addValue(5.0,series1,category5);

        dataset.addValue(5.0,series2,category1);
        dataset.addValue(2.0,series2,category2);
        dataset.addValue(7.0,series2,category3);
        dataset.addValue(6.0,series2,category4);
        dataset.addValue(3.0,series2,category5);

        dataset.addValue(7.0,series3,category1);
        dataset.addValue(9.0,series3,category2);
        dataset.addValue(3.0,series3,category3);
        dataset.addValue(6.0,series3,category4);
        dataset.addValue(4.0,series3,category5);

        dataset.addValue(7.0,series4,category1);
        dataset.addValue(9.0,series4,category2);
        dataset.addValue(3.0,series4,category3);
        dataset.addValue(6.0,series4,category4);
        dataset.addValue(4.0,series4,category5);
        return dataset;
    }
    private JFreeChart createChart(CategoryDataset dataset){
        JFreeChart chart= ChartFactory.createBarChart(
                    "Bar Chart demo1",//标题
                    "Category",//横坐标标签
                     "Value",//纵坐标标签
                    dataset,
                    PlotOrientation.VERTICAL,//垂直
                    true,//显示说明
                    true,//显示工具提示
                    false
        );
        return chart;
    }
    public static void main(String args[])throws Exception{
      BarChartDemo0 demo1=new BarChartDemo0("Bar Chart Demo0");
      demo1.pack();
      UIUtils.centerFrameOnScreen(demo1);
      demo1.setVisible(true);
    }
}

直线图

line0.png
package org.ysy.study.chart.line;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.ui.ApplicationFrame;
import org.jfree.chart.ui.UIUtils;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

import java.awt.*;

public class LineChartDemo0 extends ApplicationFrame {
    public LineChartDemo0(String titile){
        super(titile);
        CategoryDataset dataset=createDataset();
        JFreeChart chart=createChart(dataset);
        ChartPanel chartPanel=new ChartPanel(chart);
        chartPanel.setPreferredSize(new Dimension(800,500));
        setContentPane(chartPanel);

    }
    private CategoryDataset createDataset(){
        DefaultCategoryDataset dataset=new DefaultCategoryDataset();
        dataset.addValue(212,"Letter","A");
        dataset.addValue(504,"Letter","B");
        dataset.addValue(1520,"Letter","C");
        dataset.addValue(1842,"Letter","D");
        dataset.addValue(2991,"Letter","E");
        return dataset;
    }
    private JFreeChart createChart(CategoryDataset dataset){
        JFreeChart chart= ChartFactory.createLineChart(
                "Line Chart Demo",
                "Category Axis",
                "Value Axis",
                dataset,
                PlotOrientation.VERTICAL,
                false,
                true,
                false
        );
        return  chart;
    }
    public static void main(String args[])throws Exception{
        LineChartDemo0 demo=new LineChartDemo0("Line CHart Demo0");
        demo.pack();
        UIUtils.centerFrameOnScreen(demo);
        demo.setVisible(true);
    }
}

如果需要生成图片保存到本地路径可以使用如下API
org.jfree.chart.ChartUtils#saveChartAsJPEG

/**
 * Saves a chart to a file in JPEG format.
 *
 * @param file  the file ({@code null} not permitted).
 * @param chart  the chart ({@code null} not permitted).
 * @param width  the image width.
 * @param height  the image height.
 *
 * @throws IOException if there are any I/O errors.
 */
public static void saveChartAsJPEG(File file, JFreeChart chart,
        int width, int height) throws IOException {

相关文章

网友评论

      本文标题:JFreeChart入门

      本文链接:https://www.haomeiwen.com/subject/aqavrktx.html