使用Jfree实现吧条形图,java代码

使用Jfree实现吧条形图,java代码。它可能在生产的报告被常用,之后,主动生成自己的代码,可以随意查看。自由地配置图表的各种性质,为了达到他们的要求和目标

package test1;

import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.labels.*;
import org.jfree.data.category.*;

import java.awt.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.jfree.ui.*;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.servlet.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.general.DatasetUtilities;

import com.dao.DBConnection;

public class JfreeChart {

	public static void main(String[] args) throws IOException, SQLException {
		// TODO Auto-generated method stub
		double[][] data = new double[][] {
				{ 1230, 1110, 1120, 1210, 720, 750, 860, 800, 1230, 1110, 1120,
						1210, 720, 750, 860, 800, 1230, 1110, 1120, 1210, 720,
						750, 860, 800 },
				{ 720, 750, 860, 800, 1230, 1110, 1120, 1210, 720, 750, 860,
						800, 720, 750, 860, 800, 1230, 1110, 1120, 1210, 720,
						750, 860, 800 } };
		String[] rowKeys = { "a", "b" };
		String[] columnKeys = { "0", "1", "2", "3", "4", "5", "6", "7", "8",
				"9", "10", "11", "12", "13", "14", "15", "16", "17", "18",
				"19", "20", "21", "22", "23" };
		CategoryDataset dataset = DatasetUtilities.createCategoryDataset(
				rowKeys, columnKeys, data);
		JFreeChart chart = ChartFactory.createBarChart(getNextDay() + "日交易量",
				"时间(/h)", "交易量", dataset, PlotOrientation.VERTICAL, true, true,
				false);
		CategoryPlot plot = chart.getCategoryPlot();
		// 设置网格背景颜色
		plot.setBackgroundPaint(Color.white);
		// 设置网格竖线颜色
		plot.setDomainGridlinePaint(Color.pink);
		// 设置网格横线颜色
		plot.setRangeGridlinePaint(Color.pink);

		// 显示每一个柱的数值,并改动该数值的字体属性
		BarRenderer renderer = new BarRenderer();
		// renderer.setBaseItemLabelGenerator(new
		// StandardCategoryItemLabelGenerator());
		// renderer.setBaseItemLabelsVisible(true);

		// 默认的数字显示在柱子中,通过例如以下两句可调整数字的显示
		// 注意:此句非常关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
		// renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(
		// ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
		// renderer.setItemLabelAnchorOffset(10D);

		// 设置每一个地区所包括的平行柱的之间距离
		renderer.setItemMargin(0.05);
		plot.setRenderer(renderer);

		// 设置地区、销量的显示位置
		// 将下方的“标注”放到上方
		// plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
		// 将默认放在左边的“销量”放到右方
		// plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
		drawToOutputStream("src//a.jpg", chart);
	}

	/**
	 * step3: 输出图表到指定的磁盘
	 *
	 * @param destPath
	 * @param chart
	 */
	public static void drawToOutputStream(String destPath, JFreeChart chart) {
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(destPath);
			// ChartUtilities.writeChartAsJPEG(
			ChartUtilities.writeChartAsPNG(fos, // 指定目标输出流
					chart, // 图表对象
					1000, // 宽
					500, // 高
					null); // ChartRenderingInfo信息
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static String getNextDay() {
		Calendar calendar = Calendar.getInstance();
		calendar.add(Calendar.DATE, -1); // 得到前一天
		Date date = calendar.getTime();
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		// System.out.println(df.format(date));
		return df.format(date);
	}
}

显示生成结果:

版权声明:本文博主原创文章。博客,未经同意不得转载。

时间: 2024-12-05 04:44:31

使用Jfree实现吧条形图,java代码的相关文章

用Jfree实现条形柱状图表,java代码实现

title: The following iterative sequence is defined for the set of positive integers: n n/2 (n is even) n 3n + 1 (n is odd) Using the rule above and starting with 13, we generate the following sequence: 13 40 20 10 5 16 8 4 2 1 It can be seen that thi

去除挖宝报毒的问题,修改基础包的java代码,并且打包

1:去除报毒的  yl-util-countly.jar 2:注释基础包 java 的调用到yl-util-countl的代码 3:充值编译gamebase-lib.jar 1:在项目里执行  ant release 2:生成的bin\classes.jar 就是 gamebase-lib.jar 附件为所以的java代码,只有3个需要改,注释掉了调用yl-util-countl的代码

java代码分析及分析工具

java代码分析及分析工具 一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复杂不言而喻.从09年开始一直沿用到现在,中间代码经过了多少人的手,留下了多少的坑,已经记不清楚了,谁也说不清了. 代码的维护成本越来越高.代码已经急需做调整和改善.最近项目组专门设立了一个小组,利用业余时间做代码分析的工作,目标对核心代码进行分析并进行设计重构. 代码分析

Tomcat使用MyEclipse远程调试Java代码配置详解

Tomcat使用MyEclipse远程调试Java代码总结如下:在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下: 第一步.配置tomcat一.在windows系统中:打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket

HBbaseUtils(HBbase shell的java代码实现)

package com.yuhui.gd.hadoop.hbase; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.NavigableMap; import java.util.Set; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConf

hibernate配置文件、Java代码与数据库之间的转换

此贴适合初学者,技术大脑请绕道! 一.配置文件 第一步:建立项目工程,以hibernate01为例 第二步:点击项目名称-->Myeclipse--> Project Facets[Capabilities]-->Install Hibernate Facet-->yes 出现下图,选择Target runtime 选择next 包建立后next  配置文件完成 二.生成数据库表(在一的基础上完成) 创建所需要的类和配置文件 例如:    创建包 Test 点击运行 数据表建立成功

Kettle变量和自定义java代码的实例应用

1  kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得简单,下面以数据库为例说明这类配置的使用. (1)      首先要找到配置文件,不同的操作系统路径也不一样,本人用win7进行开发,配置文件的路径为"C:\Users\chenpeng\.kettle\kettle.properties",如下: (2)      配置文件中的具体配置如

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St

java代码的初始化过程研究

刚刚在ITeye上看到一篇关于java代码初始化的文章,看到代码我试着推理了下结果,虽然是大学时代学的知识了,没想到还能做对.(看来自己大学时掌握的基础还算不错,(*^__^*) 嘻嘻--)但是博主写的不够详细具体,我想在这详细谈一下java代码的具体初始化过程. 首先要清楚,初始化分为两个过程:类初始化.对象初始化. 类初始化是指类加载器将类加载到内存时,对类成员的初始化过程,也就是有static修饰的变量.对于加载完的类,它的类变量都会赋一个默认值,即使你定义时就赋值了.比如int类型就是0