zoukankan      html  css  js  c++  java
  • java 柱状图、折线图、饼状图

    1.绘制柱状图:

    //BarChartTool工具类代码
    package GUIview;
    
    import HibernateTool.HibernateTools;
    import ProductClass.Featureandfreq;
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    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.data.category.CategoryDataset;
    import org.jfree.data.category.DefaultCategoryDataset;
    
    import java.awt.*;
    import java.util.List;
    
    public class BarChartTool {
        public  ChartPanel panel1;
        public BarChartTool() {
            CategoryDataset dataset = getDataSet();
            JFreeChart chart = ChartFactory.createBarChart3D("产品特征分布", // 图表标题
                    "产品特征种类", // 目录轴的显示标签
                    "频数", // 数值轴的显示标签
                    dataset, // 数据集
                    PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                    true, // 是否显示图例(对于简单的柱状图必须是false)
                    false, // 是否生成工具
                    false // 是否生成URL链接
            );
    
            // 从这里开始
            CategoryPlot plot = chart.getCategoryPlot();// 获取图表区域对象
            CategoryAxis domainAxis = plot.getDomainAxis(); // 水平底部列表
            domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 14)); // 水平底部标题
            domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12)); // 垂直标题
            ValueAxis rangeAxis = plot.getRangeAxis();// 获取柱状
            rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 15));
            chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));
            chart.getTitle().setFont(new Font("宋体", Font.BOLD, 20));// 设置标题字体
            // 到这里结束,虽然代码有点多,但只为一个目的,解决汉字乱码问题
    
            panel1 = new ChartPanel(chart, true); // 这里也可以用chartFrame,可以直接生成一个独立的Frame
        }
    
        private static CategoryDataset getDataSet() {
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            //以下四句作用:利用实例化的类和映射文件到数据库中查出对应的表,读取数据放到list集合中
            // 创建一个session对象;HibernateTools(这个是Hibernate自建工具类)
            Session session = HibernateTools.getSession();
            Criteria criteria=session.createCriteria(Featureandfreq.class);
            List<Featureandfreq> texts = criteria.list();
            HibernateTools.closeSession();
            String feature;
            String freqTemp;
            int freq;
            for (Featureandfreq text : texts) {
                feature=text.getFeature();
                freqTemp=text.getFreq();
                freq=Integer.parseInt(freqTemp);
                if(freq>20){
                    dataset.addValue(freq,feature,feature);
                }
            }
            return dataset;
        }
    
    }
    //测试类
    package
    GUIview; import javax.swing.*; public class FeaturePicture { public FeaturePicture(){ JFrame jf = new JFrame("产品特征分布图"); BarChartTool barChartTool=new BarChartTool(); jf.add(barChartTool.panel1); // 添加柱形图 jf.setBounds(50, 50, 900, 600); jf.setVisible(true); } public static void main(String[] args) { new FeaturePicture(); } }

    2.绘制饼状图

    (1)饼状图工具类

    package GUIview;
    
    import HibernateTool.HibernateTools;
    import ProductClass.Problemfreq;
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
    import org.jfree.chart.plot.PiePlot;
    import org.jfree.data.general.DefaultPieDataset;
    
    import java.awt.*;
    import java.text.DecimalFormat;
    import java.text.NumberFormat;
    import java.util.List;
    
    public class PieChartTool {
        public ChartPanel panel1;
        public PieChartTool(){
            DefaultPieDataset data = getDataSet();
            JFreeChart chart = ChartFactory.createPieChart3D("产品问题分布",data,true,false,false);
            //设置百分比
            PiePlot pieplot = (PiePlot) chart.getPlot();
            DecimalFormat df = new DecimalFormat("0.00%");//获得一个DecimalFormat对象,主要是设置小数问题
            NumberFormat nf = NumberFormat.getNumberInstance();//获得一个NumberFormat对象
            StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0}  {2}", nf, df);//获得StandardPieSectionLabelGenerator对象
            pieplot.setLabelGenerator(sp1);//设置饼图显示百分比
    
            //没有数据的时候显示的内容
            pieplot.setNoDataMessage("无数据显示");
            pieplot.setCircular(false);
            pieplot.setLabelGap(0.02D);
    
            pieplot.setIgnoreNullValues(true);//设置不显示空值
            pieplot.setIgnoreZeroValues(true);//设置不显示负值
            panel1=new ChartPanel (chart,true);
            chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//设置标题字体
            PiePlot piePlot= (PiePlot) chart.getPlot();//获取图表区域对象
            piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//解决乱码
            chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,10));
        }
        private static DefaultPieDataset getDataSet() {
            DefaultPieDataset dataset = new DefaultPieDataset();
            //以下四句作用:利用实例化的类和映射文件到数据库中查出对应的表,读取数据放到list集合中
            // 创建一个session对象;HibernateTools(这个是Hibernate自建工具类)
            Session session = HibernateTools.getSession();
            Criteria criteria=session.createCriteria(Problemfreq.class);
            List<Problemfreq> texts = criteria.list();
            HibernateTools.closeSession();
            String problem;
            String freqTemp;
            int freq;
            for (Problemfreq text : texts) {
                problem=text.getProblem();
                freqTemp=text.getFreq();
                freq=Integer.parseInt(freqTemp);
                dataset.setValue(problem,freq);
            }
            return dataset;
        }
    
    }

    (2)饼状图测试类

    package GUIview;
    
    import javax.swing.*;
    
    public class QualityPicture {
        public QualityPicture(){
            JFrame jf = new JFrame("质量问题分布图");
            PieChartTool pieChartTool=new PieChartTool();
            jf.add(pieChartTool.panel1); //添加饼状图
            jf.setBounds(50, 50, 700, 550);
            jf.setVisible(true);
        }
    
        public static void main(String[] args) {
            new QualityPicture();
        }
    }

    参考文章:

    https://www.cnblogs.com/huole/p/6554386.html

    https://www.cnblogs.com/newwind/p/5680389.html

  • 相关阅读:
    Leetcode 15 3Sum
    Leetcode 383 Ransom Note
    用i个点组成高度为不超过j的二叉树的数量。
    配对问题 小于10 1.3.5
    字符矩阵的旋转 镜面对称 1.2.2
    字符串统计 连续的某个字符的数量 1.1.4
    USACO twofive 没理解
    1002 All Roads Lead to Rome
    USACO 5.5.1 求矩形并的周长
    USACO 5.5.2 字符串的最小表示法
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10307438.html
Copyright © 2011-2022 走看看