美文网首页
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