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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)