zoukankan      html  css  js  c++  java
  • 一秒钟教会你如何 使用jfreechart制作图表,扇形图,柱形图,线型图,时序图,附上详细代码,直接看效果

         今天有小伙伴问到我怎么使用jfreeChat生成图标,去年就有一个这方便的的总结,今天再遇到,就总结出来,供大家参考:

    第一个:

    创建柱状图,效果图如下:

    柱状图代码如下:

    package cn.xfz.image;
    
    import java.awt.Color;
    import java.awt.Font;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.ValueAxis;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.title.LegendTitle;
    import org.jfree.chart.title.TextTitle;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.general.DatasetUtilities;
    
    
    /**
     * 创建柱状图
     * @author Administrator
     *
     */
    public class CreateBarChartA {
        
        public static void main(String[] args) {
            //3D柱状图
            makeBarChar3D();
        }
        
    
        /**
         * 内部类 
         * 获得数据及
         * @return
         */
        public static CategoryDataset getDataset(){
            
            //定义一个数组,声明每组要显示的数据
            String [] rowKeys={"CPU","硬盘","内存"};
             //定义显示多少组
            String [] columnKeys={"惠州","上海","深圳","北京","云南"};
            
            //定义一个二维数组
            double [][] data=new double[][]{
                    {100,356,524,456,42},
                    {200,350,124,256,142},
                    {100,156,324,406,342}
            };
            // DatasetUtilities 数据集的工具类 CategoryDataset(柱状图的数据集)
            /*CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys,data);
            
            return dataset;
            */
            
            CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                    rowKeys, columnKeys, data);
            
            return dataset;
        }
        
        /**
         * 生成立体柱状图
         */
        public static void makeBarChar3D(){
            
            String title="电脑配件3月的销售量";
    
            // 1.获得数据集
            CategoryDataset dataset = getDataset();
            
            JFreeChart chart = ChartFactory.createBarChart3D(title, 
                     
                    "配件",     //目录轴显示的标签
                    "销量",  //数值轴显示的标签
                    dataset,
                    PlotOrientation.VERTICAL, //图表显示的方向
                    true, //是否生成图例
                    true, //是否生成工具提示
                    true //是否生成链接路径
                );
            
            
            //设置标题字体
            Font font = new Font("宋体",Font.BOLD,18);
            TextTitle textTitle = new TextTitle();
            textTitle.setFont(font);
            
            chart.setTitle(textTitle);
            
            
            //设置背景颜色RGB格式
            chart.setBackgroundPaint(new Color(255,255,255));
            
            //获得柱状图的plot对象
            CategoryPlot plot = chart.getCategoryPlot();
            
            //取得X轴
            CategoryAxis categoryAxis = plot.getDomainAxis();
            //设置X轴显示的标签的字体
            categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 16));
            //设置X轴标记的字体
            categoryAxis.setTickLabelFont(new Font("宋体",Font.TRUETYPE_FONT,16));
            
            //取得Y轴
            ValueAxis rangeAxis = plot.getRangeAxis();
            //设置Y轴显示的标签的字体
            rangeAxis.setLabelFont(new Font("宋体", Font.BOLD, 16));
            
            
            //获得legend
            LegendTitle legend = chart.getLegend();
            legend.setItemFont(new Font("宋体", Font.BOLD, 16));
            
            //创建图标的窗体
            ChartFrame frame = new ChartFrame(title, chart, true);
            //窗体大小设置为自动适应
            frame.pack();
            //设置为可见
            frame.setVisible(true);
            
        }
    }

    第二个:字体设置后的柱状图 ,效果图如下:

     代码如下:

    package cn.xfz.image;
    
    
    import java.awt.Color;
    import java.awt.Font;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.StandardChartTheme;
    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.chart.title.LegendTitle;
    import org.jfree.chart.title.TextTitle;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.general.DatasetUtilities;
    
    /**
     * 创建柱状图
     * */
    public class CreateBarcharB {
        
        public static void main(String[] args) {
            //3D柱状图
            makeBarChart3D();
        }
        /**
         * 获得数据集。
         * 
         * @return org.jfree.data.category.CategoryDataset
         */
        private static CategoryDataset getDataset() {
            // 定义一个数组声明每组需要体现的数据
            String[] rowKeys = { "CPU", "硬盘", "内存" };
            // 定义有多少组
            String[] columnKeys = { "北京", "上海", "广州", "南京", "深圳" };
    
            // 各个组的数据
            double[][] data = new double[][] { { 751, 800, 260, 600, 200 },
                    { 400, 560, 240, 300, 150 }, { 600, 450, 620, 220, 610 } };
            // DatasetUtilities 数据集的工具类 CategoryDataset(柱状图的数据集)
            CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                    rowKeys, columnKeys, data);
    
            return dataset;
        }
    
        /**
         * 在工厂里直接设置字体
         * 生成柱状图。
         */
        public static void makeBarChart3D() {
        
            String title = "电脑配件三月销量";
    
            // 1.获得数据集
            CategoryDataset dataset = getDataset();
            
            //处理中文乱码
            StandardChartTheme chartTheme = new StandardChartTheme("CN");
            //标题
            chartTheme.setExtraLargeFont(new Font("宋体",Font.PLAIN,16));
            //图例
            chartTheme.setRegularFont(new Font("宋体",Font.PLAIN,16));
            //轴向字体
            chartTheme.setLargeFont(new Font("宋体",Font.PLAIN,16));
            
            ChartFactory.setChartTheme(chartTheme);
            
            
            
            // 2.创建一个柱状图
            JFreeChart chart = ChartFactory.createBarChart3D(title, // 图表标题
                    "配件", // 目录轴的显示标签
                    "销量", // 数值轴的显示标签
                    dataset, // 数据集
                    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                    true, // 是否显示图例 legend
                    true, // 是否生成工具(提示) 提示
                    true // 是否生成URL链接
                    );
    
            // 创建图表的窗体
            ChartFrame frame = new ChartFrame(title, chart, true);
            // 窗体的大小设置为自适应
            frame.pack();
            // 设置为可见
            frame.setVisible(true);
    
        }
    
        
    
    }

    第三个:线型图,效果图如下

    代码如下:

    package cn.xfz.image;
    
    import java.awt.Font;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.StandardChartTheme;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.CategoryDataset;
    import org.jfree.data.general.DatasetUtilities;
    
    /**
     * 创建线型图
     *
     */
    public class CreateLineChart {
    
        public static void main(String[] args) {
            //折线图
            makeLineChart();
        }
        
        /**
         * 获得数据集。
         * 
         * @return org.jfree.data.category.CategoryDataset
         */
        private static CategoryDataset getDataset() {
            // 定义一个数组声明每组需要体现的数据
            String[] rowKeys = { "CPU", "硬盘", "内存" };
            // 定义有多少组
            String[] columnKeys = { "北京", "上海", "广州", "南京", "深圳" };
    
            // 各个组的数据
            double[][] data = new double[][] { { 751, 800, 260, 600, 200 },
                    { 400, 560, 240, 300, 150 }, { 600, 450, 620, 220, 610 } };
            // DatasetUtilities 数据集的工具类 CategoryDataset(柱状图的数据集)
            CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
                    rowKeys, columnKeys, data);
    
            return dataset;
        }
        
        /**
         * 生成折现图
         */
        public static void makeLineChart(){
            String title = "电脑配件三月销量";
    
            // 1.获得数据集
            CategoryDataset dataset = getDataset();
            
            //处理中文乱码
            StandardChartTheme chartTheme = new StandardChartTheme("CN");
            //标题
            chartTheme.setExtraLargeFont(new Font("宋体",Font.PLAIN,16));
            //图例
            chartTheme.setRegularFont(new Font("宋体",Font.PLAIN,16));
            //轴向字体
            chartTheme.setLargeFont(new Font("宋体",Font.PLAIN,16));
            
            ChartFactory.setChartTheme(chartTheme);
            
            JFreeChart chart = ChartFactory.createLineChart(title,
                    "配件", // 目录轴的显示标签
                    "销量", // 数值轴的显示标签
                    dataset, // 数据集
                    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                    true, // 是否显示图例 legend
                    true, // 是否生成工具(提示) 提示
                    false // 是否生成URL链接
                    );
            
            // 创建图表的窗体
            ChartFrame frame = new ChartFrame(title, chart, true);
            // 窗体的大小设置为自适应
            frame.pack();
            // 设置为可见
            frame.setVisible(true);
        }
        
    }

    第四个:扇形图,效果图如下

    代码如下:

    package cn.xfz.image;
    
    import java.awt.Font;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.StandardChartTheme;
    import org.jfree.data.general.DefaultPieDataset;
    
    /**
     * 生成扇形图
     *
     */
    public class CreatePieChart {
        
        public static void main(String[] args) {
            //生成扇形图
            makePieChart3D();
        }
    
        /**
         * 获取结果集
         * @return
         */
        public static DefaultPieDataset getDataset(){
            
            DefaultPieDataset dataset = new DefaultPieDataset();
            
            dataset.setValue("研发人员", 35);
            dataset.setValue("市场策划人员", 10);
            dataset.setValue("市场推广人员", 25);
            dataset.setValue("网络维护人员", 5);
            dataset.setValue("财务人员", 15);
            
            return dataset;
            
        }
        
        
        /**
         * 生成扇形图
         */
        public static void makePieChart3D(){
            
            String title = "各部门人员比例";
            // 获得数据集   
            DefaultPieDataset dataset = getDataset();
            
            // 处理中文乱码
            StandardChartTheme chartTheme = new StandardChartTheme("CN");
            // 标题
            chartTheme.setExtraLargeFont(new Font("宋体", Font.BOLD, 20));
            // legend
            chartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 18));
            // 轴向字体
            chartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 16));
            ChartFactory.setChartTheme(chartTheme);
            
            JFreeChart chart = ChartFactory.createPieChart3D(
                    title, //标题
                    dataset,     // 图表数据集   
                    true,         // 是否显示图例   
                    false,         // 是否生成工具(提示)   
                    false         // 是否生成URL链接  
                    );
            
            // 创建图表的窗体
            ChartFrame frame = new ChartFrame(title, chart, true);
            // 窗体的大小设置为自适应
            frame.pack();
            // 设置为可见
            frame.setVisible(true);
        }
    }

    第五个:时序图,效果图如下

    代码如下:

    package cn.xfz.image;
    
    import java.awt.Font;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartFrame;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.StandardChartTheme;
    
    import org.jfree.data.time.Day;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    
    public class CreateTimeSeriesChart {
        public static void makeTimeSeriesChart() {
            // 实例化TimeSeries对象
            TimeSeries timeseries = new TimeSeries("Data");
            
            // 实例化Day
            Day day = new Day(1,1,2009);
            double d = 3000D;
            // 添加一年365天的数据
            for(int i = 0 ; i < 365 ; i++){
                // 创建随机数据
                d = d+(Math.random() - 0.5) * 10;
                
                // 向数据集合中添加数据
                timeseries.add(day,d);
                
                day = (Day)day.next();//下一天
            }
            
            // 创建TimeSeriesCollection集合对象(数据集)
            TimeSeriesCollection dataset = new TimeSeriesCollection(timeseries);
        
            // 处理中文乱码
            StandardChartTheme chartTheme = new StandardChartTheme("CN");
            // 标题
            chartTheme.setExtraLargeFont(new Font("宋体", Font.BOLD, 20));
            // legend
            chartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 18));
            // 轴向字体
            chartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 16));
            ChartFactory.setChartTheme(chartTheme);
            
            // 生成时序图   
            JFreeChart chart = ChartFactory.createTimeSeriesChart("上证指数时序图",//标题
                    "日期",    //时间轴标签
                    "指数",    //数据轴标签
                    dataset,//数据集合                
                    true,    //是否显示图例标识
                    true,    //是否显示tooltips
                    false);    //是否支持超链接
            
            ChartFrame cf = new ChartFrame("时序图", chart);
            cf.pack();
            cf.setVisible(true);
        }
        public static void main(String[] args) {
            // 时序图   
            makeTimeSeriesChart();
        }
    
    }

    今天就到这了,也没有太多的废话,不懂得朋友直接@我微信:qh2827

  • 相关阅读:
    ID,ClientID,UniqueID的区别
    Struct构造函数
    关于sizeof,typeof
    C#文件读写
    code1
    .NET中加密与解密QueryString的方法
    addEventListener和attachEvent的区别
    执行带参数的存储过程
    如何得到机器上装的Powershell的版本
    [Gradle] How to determine OS info
  • 原文地址:https://www.cnblogs.com/dqh94/p/7716771.html
Copyright © 2011-2022 走看看