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

  • 相关阅读:
    20145334赵文豪 《信息安全系统设计基础》第2周学习总结
    20145334赵文豪《信息安全系统设计基础》第1周学习总结
    关于第五周大家学习问题的总结
    20145334 第五次 java 实验报告
    20145334 《Java程序设计》第10周学习总结
    实验四 Android开发基础
    # 20145334 《Java程序设计》第9周学习总结
    20145334实验三《敏捷开发与XP实践》
    实验二:面向对象设计
    程序的机器级表示内容补充及扩展
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10307438.html
Copyright © 2011-2022 走看看