JfreeChart学习总结

直接生成3D柱状图:
public class Report {
	public static void main(String[] args) {
		// 创建一个柱状图
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		// 装载数据
		dataset.setValue(6, "Profit", "Jane");
		dataset.setValue(3, "Profit2", "Jane");
		dataset.setValue(7, "Profit", "Tom");
		dataset.setValue(6, "Profit2", "Tom");
		dataset.setValue(8, "Profit", "Jill");
		dataset.setValue(9, "Profit2", "Jill");
		dataset.setValue(5, "Profit", "John");
		dataset.setValue(8, "Profit2", "John");
		dataset.setValue(12, "Profit", "Fred");
		dataset.setValue(11, "Profit2", "Fred");

		// 产生柱状图
		// JFreeChart chart =
		// ChartFactory.createXYLineChart("标题","x轴标志","y轴标志","设置数据"
		// ,"设置图形显示方向",是否显示图形,是否进行提示,是否配置报表存放地址);
		// 图形显示方向:
		// (1)HORIZONTAL:横向显示图形
		// (2)VERTICAL:纵向显示图形

		// 3D柱状图
		JFreeChart chart = ChartFactory.createBarChart3D("销售统计图", "Salesman",
				"Profit", dataset, PlotOrientation.VERTICAL, true, true, false);

		try {
			// // 创建图形显示面板
			// ChartFrame cf = new ChartFrame("柱状图",chart);
			// cf.pack();
			// // 设置图片大小
			// cf.setSize(500,300);
			// // 设置图形可见
			// cf.setVisible(true);

			// 保存图片到指定文件夹
			ChartUtilities.saveChartAsJPEG(new File("C:\\BarChart.jpg"), chart,
					500, 300);
		} catch (Exception e) {
			System.err.println("Problem occurred creating chart.");
		}
	}
}

 

public class JFreeReport {
	Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
	Connection conn = DriverManager
			.getConnection("jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=;DatabaseName=library");
	Statement stmt = conn.createStatement();
	ResultSet rs = stmt
			.executeQuery("select bookType, bookCount=count(*) from books group by bookType");
	//第2步,从ResultSet得到CategoryDataset
	DefaultCategoryDataset dataset = new DefaultCategoryDataset();

	while (rs.next()) {
		String bookType = rs.getString("bookType");
		int bookCount = rs.getInt("bookCount");
		//这个例子并不够好,因为这里所有的数据共享了同一个维:“Count”。
		//所以它实际上只是一个一维表:以bookType为维,以bookCount为值
		//Count维其实并没有起到任何作用
		//文档《使用 JFreeChart来创建基于web的图表》中的直方图才是二维表的好例子
		dataset.setValue(bookCount, "Count", bookType);
	}
	/*
	 JfreeChart也提供了直接从Datasource/Connection
	 中获得Dataset的JDBCDataset,在本例中可以改用这个类
	 */

	//第3步,从Dateset中创建Chart
	JFreeChart chart = ChartFactory.createBarChart("各种类别的书籍的册数", "类别",
			"册数", dataset, PlotOrientation.VERTICAL, true, true, false);
	//最后一步,导出图片到WEB
	ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart,
			640, 370);
	//640和370分别代表Chart的宽度和高度
	//其实可以根据ResultSet的行数来确定它的宽度
	//根据数据的最大值来确定它的高度
	//如果把Chart 放到报表中,就会失去这个灵活性
}

 

你可能感兴趣的:(c,Web,jdbc,Microsoft,jfreechart)