java 柱状图、折线图、饼状图

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}

参考文章:

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

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

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前