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);
	}
}

其他类就不上代码了,跟你平时连数据库一样。

看张效果图:[数据乱写的]

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

时间: 2024-08-02 06:57:36

Java读取数据库数据生成柱状图的相关文章

nodejs实现,每天定时自动读取数据库数据-生成excel表格-发送给老板邮箱(promise版)

async版:http://blog.csdn.net/zzwwjjdj1/article/details/52129192 写这个版本主要是,promise比较好用,而且,现在已经是nodejs的内置对象了,无须再引用第三方库 -- 需要的工具 数据库    mysql 连接数据库模块 mysql  基本封装: http://blog.csdn.net/zzwwjjdj1/article/details/51991348 自动运行模块   node-schedule 基本使用 : http:/

java 读取数据库数据转化输出XML输出在jsp页面

因为老师实验报告要求,搭建服务端解析XML 下面代码实现转化XML格式也是在网上找的转化代码 输出在jsp页面以便于客户端解析是自己写的 一个类就解决了Test package tests; //三只坚果 import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.apache.crimson.tree.XmlDocument; import javax.xml.pars

读取数据库数据,并将数据整合成3D饼图在jsp中显示

首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) 1 import java.io.IOException; 2 import java.sql.SQLException; 3 import org.jfree.chart.ChartFactory; 4 import org.jfree.chart.JFreeChart; 5 import org.jfree.data.general.DefaultPieDataset; 6 7 p

jxl读数据库数据生成xls 并下载

1.所需jar jxl-2.6.10.jar jxls-core-1.0-RC-3.jar jxls-reader-1.0-RC-3.jar 2. excel修改行宽度封装 SheetColumn.java package com.tp.soft.common.excel; import jxl.write.WritableSheet; /** * excel修改行宽度 * @author taop * */ public interface SheetColumn { public abstr

Java千万级别数据生成文件思路和优化

一年前写过一个百万级别数据库数据生成配置xml文件的程序,程序目的是用来把数据库里面的数据生成xml文件.程序可以配置多少文件生成到一个文件中去. 程序刚开始设计的时候说的是最多百万级别数据,最多50W数据生成到一个xml文件里面去,所以在做测试的时候自己也只是造了100W的数据并没有做过多数据量的测试,然后问题就来了....由于程序使用的局点数据量巨大,需要生成xml文件的客户资料接近千万级别的程度,而现场对程序的配置大约是100W条数据生成一个xml文件里面去,程序在这样的大数据量下面偶尔会

java读取数据库时间结尾多了.0知识总结

问题: java读取数据库时间,发现显示的时间最后面多了.0 解决办法: 采用JSTC国际化标签,在使用这个标签时只需要修改你需要显示的数据value(第一步记得导入标签库) <fmt:formatDate type="time" value="${list.presetTime }" pattern="yyyy-MM-dd HH:mm:ss"></fmt:formatDate>

python读取数据库数据,读取出的中文乱码问题

最近遇到python读取数据库数据,读取出的中文乱码问题, 网络搜索的基本是: "1. Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)2. MySQL数据库charset=utf-83. Python连接MySQL是加上参数 charset=utf84. 设置Python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)" 这些,一一尝试后仍未解决.去数据库查看了下,发现这个出现中文乱码的字段类型是varcha

(转)java读取数据库表信息,子段

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /*** * 2014-07-21日: * oracle数据

读取数据库数据填充到缓存的问题,及修复方案一则

业务简述: 为了提高站点性能,部署了一台Redis,把资源从SqlServer数据库中同步到Redis,站点由原来的读取数据库,变更为读取Redis,以利用Redis的高并发提升站点性能目的. 环境说明: 1.假设表名为softs, 记录的更新时间字段名为 updateTime: 2.不考虑数据库的DELETE操作,只考虑INSERT和UPDATE操作: 3.流程中所有时间,都以数据库时间为准,以避免不同服务器之间的时间误差,导致数据遗漏. 4.重要的前提条件:数据库执行INSERT和UPDAT