• Java读取数据库数据生成柱状图


    此案例是用swing显示数据的。须要引入jfreechart相关包。不同版本号可能包不同样。本人用的是
    此案例在ssi框架下会报错,不用框架就没问题。
    Java后台逻辑代码:
    public class BarChart {
    	ChartPanel frame1;
    
    	public BarChart() {
    		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));// 设置标题字体
    
    		// 到这里结束,尽管代码有点多,但仅仅为一个目的,解决汉字乱码问题
    
    		frame1 = new ChartPanel(chart, true); // 这里也能够用chartFrame,能够直接生成一个独立的Frame
    
    	}
    
    	private static CategoryDataset getDataSet() {
    		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
    		List<News> data = new ArrayList<News>();
    		NewsDao dao = new NewsDao();
    		ArrayList<News> list = dao.queryAll();
    		double value =0;
    		String rowKeys=null;
    		String columnKeys=null;
    		for (News news : list) {
    //			data.add(new News(news.getNewsId(), news.getTypeId(), news
    //					.getTitle(), news.getPublishTime(), news.getBody(), news
    //					.getTag(), news.getAuthor(), news.getClicks(), news
    //					.getImgUrl()));
    			value = news.getNewsId();
    			rowKeys = news.getTitle();
    			columnKeys =  news.getAuthor();
    			dataset.addValue(value, rowKeys, columnKeys);
    			System.out.println(value+"  "+rowKeys+"  "+columnKeys);
    		}
    //		if(value!=0&&rowKeys!=null&&columnKeys!=null){
    //			System.out.println(value+"  "+rowKeys+"  "+columnKeys);
    //			dataset.addValue(value, rowKeys, columnKeys);
    //		}
    //		dataset.addValue(100, "北京", "苹果");
    //		dataset.addValue(100, "上海", "苹果");
    //		dataset.addValue(100, "广州", "苹果");
    //		dataset.addValue(200, "北京", "梨子");
    //		dataset.addValue(200, "上海", "梨子");
    //		dataset.addValue(200, "广州", "梨子");
    //		dataset.addValue(300, "北京", "葡萄");
    //		dataset.addValue(300, "上海", "葡萄");
    //		dataset.addValue(300, "广州", "葡萄");
    //		dataset.addValue(400, "北京", "香蕉");
    //		dataset.addValue(400, "上海", "香蕉");
    //		dataset.addValue(400, "广州", "香蕉");
    //		dataset.addValue(500, "北京", "荔枝");
    //		dataset.addValue(500, "上海", "荔枝");
    //		dataset.addValue(500, "广州", "荔枝");
    		return dataset;
    	}
    
    	public ChartPanel getChartPanel() {
    		return frame1;
    
    	}
    
    	public static void main(String[] args) {
    		JFrame frame = new JFrame("Java数据统计图");
    		// frame.setLayout(new GridLayout(2,2,10,10));
    		frame.add(new BarChart().getChartPanel()); // 加入柱形图
    		// frame.add(new BarChart1().getChartPanel()); //加入柱形图的还有一种效果
    		// frame.add(new PieChart().getChartPanel()); //加入饼状图
    		// frame.add(new TimeSeriesChart().getChartPanel()); //加入折线图
    		frame.setBounds(50, 50, 800, 600);
    		frame.setVisible(true);
    	}
    }
    其它类就不上代码了,跟你平时连数据库一样。
    看张效果图:[数据乱写的]
  • 相关阅读:
    历史博文汇总
    Golang快速入门:从菜鸟到大佬
    网络1911、1912 DS第4次作业--批改总结
    [机器学习实战-Logistic回归]使用Logistic回归预测各种实例
    [机器学习实战-kNN算法]约会网站问题和手写数字系统实例
    SQL学习笔记(一)之基础语句
    Python学习笔记(九)之面向对象编程(下)
    Python学习笔记(八)之面向对象编程(上)
    Python学习笔记(七)之Python模块
    Python学习笔记(六)之函数式编程
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/6852630.html
Copyright © 2020-2023  润新知