1.绘制柱状图:
1//BarChartTool工具类代码 2 3package GUIview; 4 5import HibernateTool.HibernateTools; 6import ProductClass.Featureandfreq; 7import org.hibernate.Criteria; 8import org.hibernate.Session; 9import org.jfree.chart.ChartFactory; 10import org.jfree.chart.ChartPanel; 11import org.jfree.chart.JFreeChart; 12import org.jfree.chart.axis.CategoryAxis; 13import org.jfree.chart.axis.ValueAxis; 14import org.jfree.chart.plot.CategoryPlot; 15import org.jfree.chart.plot.PlotOrientation; 16import org.jfree.data.category.CategoryDataset; 17import org.jfree.data.category.DefaultCategoryDataset; 18 19import java.awt.*; 20import java.util.List; 21 22public class BarChartTool { 23 public ChartPanel panel1; 24 public BarChartTool() { 25 CategoryDataset dataset = getDataSet(); 26 JFreeChart chart = ChartFactory.createBarChart3D("产品特征分布", // 图表标题 27 "产品特征种类", // 目录轴的显示标签 28 "频数", // 数值轴的显示标签 29 dataset, // 数据集 30 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 31 true, // 是否显示图例(对于简单的柱状图必须是false) 32 false, // 是否生成工具 33 false // 是否生成URL链接 34 ); 35 36 // 从这里开始 37 CategoryPlot plot = chart.getCategoryPlot();// 获取图表区域对象 38 CategoryAxis domainAxis = plot.getDomainAxis(); // 水平底部列表 39 domainAxis.setLabelFont(new Font("黑体", Font.BOLD, 14)); // 水平底部标题 40 domainAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 12)); // 垂直标题 41 ValueAxis rangeAxis = plot.getRangeAxis();// 获取柱状 42 rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 15)); 43 chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15)); 44 chart.getTitle().setFont(new Font("宋体", Font.BOLD, 20));// 设置标题字体 45 // 到这里结束,虽然代码有点多,但只为一个目的,解决汉字乱码问题 46 47 panel1 = new ChartPanel(chart, true); // 这里也可以用chartFrame,可以直接生成一个独立的Frame 48 } 49 50 private static CategoryDataset getDataSet() { 51 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 52 //以下四句作用:利用实例化的类和映射文件到数据库中查出对应的表,读取数据放到list集合中 53 // 创建一个session对象;HibernateTools(这个是Hibernate自建工具类) 54 Session session = HibernateTools.getSession(); 55 Criteria criteria=session.createCriteria(Featureandfreq.class); 56 List<Featureandfreq> texts = criteria.list(); 57 HibernateTools.closeSession(); 58 String feature; 59 String freqTemp; 60 int freq; 61 for (Featureandfreq text : texts) { 62 feature=text.getFeature(); 63 freqTemp=text.getFreq(); 64 freq=Integer.parseInt(freqTemp); 65 if(freq>20){ 66 dataset.addValue(freq,feature,feature); 67 } 68 } 69 return dataset; 70 } 71 72} 73 74//测试类package GUIview; 75 76import javax.swing.*; 77 78public class FeaturePicture { 79 public FeaturePicture(){ 80 JFrame jf = new JFrame("产品特征分布图"); 81 BarChartTool barChartTool=new BarChartTool(); 82 jf.add(barChartTool.panel1); // 添加柱形图 83 jf.setBounds(50, 50, 900, 600); 84 jf.setVisible(true); 85 } 86 87 public static void main(String[] args) { 88 new FeaturePicture(); 89 } 90}
2.绘制饼状图
(1)饼状图工具类
1package GUIview; 2 3import HibernateTool.HibernateTools; 4import ProductClass.Problemfreq; 5import org.hibernate.Criteria; 6import org.hibernate.Session; 7import org.jfree.chart.ChartFactory; 8import org.jfree.chart.ChartPanel; 9import org.jfree.chart.JFreeChart; 10import org.jfree.chart.labels.StandardPieSectionLabelGenerator; 11import org.jfree.chart.plot.PiePlot; 12import org.jfree.data.general.DefaultPieDataset; 13 14import java.awt.*; 15import java.text.DecimalFormat; 16import java.text.NumberFormat; 17import java.util.List; 18 19public class PieChartTool { 20 public ChartPanel panel1; 21 public PieChartTool(){ 22 DefaultPieDataset data = getDataSet(); 23 JFreeChart chart = ChartFactory.createPieChart3D("产品问题分布",data,true,false,false); 24 //设置百分比 25 PiePlot pieplot = (PiePlot) chart.getPlot(); 26 DecimalFormat df = new DecimalFormat("0.00%");//获得一个DecimalFormat对象,主要是设置小数问题 27 NumberFormat nf = NumberFormat.getNumberInstance();//获得一个NumberFormat对象 28 StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//获得StandardPieSectionLabelGenerator对象 29 pieplot.setLabelGenerator(sp1);//设置饼图显示百分比 30 31 //没有数据的时候显示的内容 32 pieplot.setNoDataMessage("无数据显示"); 33 pieplot.setCircular(false); 34 pieplot.setLabelGap(0.02D); 35 36 pieplot.setIgnoreNullValues(true);//设置不显示空值 37 pieplot.setIgnoreZeroValues(true);//设置不显示负值 38 panel1=new ChartPanel (chart,true); 39 chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//设置标题字体 40 PiePlot piePlot= (PiePlot) chart.getPlot();//获取图表区域对象 41 piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//解决乱码 42 chart.getLegend().setItemFont(new Font("黑体",Font.BOLD,10)); 43 } 44 private static DefaultPieDataset getDataSet() { 45 DefaultPieDataset dataset = new DefaultPieDataset(); 46 //以下四句作用:利用实例化的类和映射文件到数据库中查出对应的表,读取数据放到list集合中 47 // 创建一个session对象;HibernateTools(这个是Hibernate自建工具类) 48 Session session = HibernateTools.getSession(); 49 Criteria criteria=session.createCriteria(Problemfreq.class); 50 List<Problemfreq> texts = criteria.list(); 51 HibernateTools.closeSession(); 52 String problem; 53 String freqTemp; 54 int freq; 55 for (Problemfreq text : texts) { 56 problem=text.getProblem(); 57 freqTemp=text.getFreq(); 58 freq=Integer.parseInt(freqTemp); 59 dataset.setValue(problem,freq); 60 } 61 return dataset; 62 } 63 64}
(2)饼状图测试类
1package GUIview; 2 3import javax.swing.*; 4 5public class QualityPicture { 6 public QualityPicture(){ 7 JFrame jf = new JFrame("质量问题分布图"); 8 PieChartTool pieChartTool=new PieChartTool(); 9 jf.add(pieChartTool.panel1); //添加饼状图 10 jf.setBounds(50, 50, 700, 550); 11 jf.setVisible(true); 12 } 13 14 public static void main(String[] args) { 15 new QualityPicture(); 16 } 17}
参考文章: