使用JFreeChart生成各种样式的图表

jfreechart后台生成图片采样完美解决方案以及样式美化 用jfreechart生成图片有很多问题,例如:x轴数据量多一点时,直接显示成了省略号,另外jfreechart默认的样式也是比较丑的,如下: jfreechart在画x轴标签时,会根据图片设置的宽度,和x轴坐标数计算出每个坐标占用的最大宽度,超过这个宽度,再去判断是否设置了参数: 默认为0,不设置这个参数的话就不会进行换行,就会直接显示省略号。因此解决思路之一就是设置这个换行参数,或者适当增加图片宽度,可以在一定范围内解决x轴省略号的问题。但是当x轴数量太多,需要进行采样................. 阅读详情

限于篇幅的问题我们在这里只实现两种常用的图表,其他类型图表读者可以触类旁通。我们先给出柱状图的实现,饼图的实现再来跟柱状图进行比较。

1 柱状图

package lius.chart.demo;
import java.io.*;
import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
/**
 * 该类用于演示最简单的柱状图生成
 * @author Winter Lau
 */
public class BarChartDemo {
	public static void main(String[] args) throws IOException{
		CategoryDataset dataset = getDataSet2();
		JFreeChart chart = ChartFactory.createBarChart3D(
							"水果产量图", // 图表标题
							"水果", // 目录轴的显示标签
							"产量", // 数值轴的显示标签
							dataset, // 数据集
							PlotOrientation.VERTICAL, // 图表方向:水平、垂直

     							true, 	// 是否显示图例(对于简单的柱状图必须是false)

     							false, 	// 是否生成工具
							false 	// 是否生成URL链接
							);
							
		FileOutputStream fos_jpg = null;
		try {
			fos_jpg = new FileOutputStream("D://fruit.jpg");
			ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
		} finally {
			try {
				fos_jpg.close();
			} catch (Exception e) {}
		}
	}
	/**
	 * 获取一个演示用的简单数据集对象
	 * @return
	 */
	private static CategoryDataset getDataSet() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(100, null, "苹果");
		dataset.addValue(200, null, "梨子");
		dataset.addValue(300, null, "葡萄");
		dataset.addValue(400, null, "香蕉");
		dataset.addValue(500, null, "荔枝");
		return dataset;
	}
	/**
	 * 获取一个演示用的组合数据集对象
	 * @return
	 */
	private static CategoryDataset getDataSet2() {
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		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;
	}
}

程序运行结束后生成的图片文件效果如下图所示:


图4
 

如果是使用简单的数据即使用getDataSet方法获取数据集时产生的图片文件如下:


图5
 

2 饼图

 

对于饼图而言,数据集的获取用的不是同一个数据集类,另外饼图不支持同一个类别的项目中还有子项目这样的数据。我们只给出创建饼图的代码,至于写图表到一个文件则与柱状图一致,无需重复。

package lius.chart.demo;
import java.io.*;
import org.jfree.data.*;
import org.jfree.chart.*;
/**
 * 用于演示饼图的生成
 * @author Winter Lau
 */
public class PieChartDemo {
	public static void main(String[] args) throws IOException{
		DefaultPieDataset data = getDataSet();
		JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",  // 图表标题
		data, 
		true, // 是否显示图例
		false,
		false
		);
		//写图表对象到文件,参照柱状图生成源码
	}
	/**
	 * 获取一个演示用的简单数据集对象
	 * @return
	 */
	private static DefaultPieDataset getDataSet() {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("苹果",100);
		dataset.setValue("梨子",200);
		dataset.setValue("葡萄",300);
		dataset.setValue("香蕉",400);
		dataset.setValue("荔枝",500);
		return dataset;
	}
}

 

生成的饼图文件效果如下:


图6
 




回页首

 

将生成的图表移到浏览器上

为了将生成的图表直接传给客户端浏览器,只需要将前面两个例子中的文件流换成是通过HttpServletResponse对象获取到的输出流,详细代码清单如下:

package lius.chart.demo;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import org.jfree.data.*;
import org.jfree.chart.*;
/**
 * 演示通过servlet直接输出图表
 * @author Winter Lau
 */
public class ChartDemoServlet extends HttpServlet {
	public void service(ServletRequest req, ServletResponse res)
		throws ServletException, IOException 
	{
		res.setContentType("image/jpeg");
		DefaultPieDataset data = getDataSet();
		JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",
		data,
		true,
		false,
		false
		);
				
		ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
			100,chart,400,300,null);
	}
	/**
	 * 获取一个演示用的简单数据集对象
	 * @return
	 */
	private static DefaultPieDataset getDataSet() {
		DefaultPieDataset dataset = new DefaultPieDataset();
		dataset.setValue("苹果",100);
		dataset.setValue("梨子",200);
		dataset.setValue("葡萄",300);
		dataset.setValue("香蕉",400);
		dataset.setValue("荔枝",500);
		return dataset;
	}
}

来自:http://www.ibm.com/developerworks/cn/java/l-jfreechart/index.html

 

解决图片乱码参见:http://zhidao.baidu.com/question/72741117.html

实战技术!Jfreechart绘制漂亮的图表 个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 美化后,Jfreechart图形效果展示: 柱状图界面: 代码:这是我封装的工具类,然后绘制图表就非常简单了,而且美观专业! package util; import java.awt.BasicStroke; import java.awt.Color; import java.a... 阅读详情

相关推荐

Java 的 JFreeChart 高级进阶:图表创作的艺术

/ 创建数据集 DefaultCategoryDataset dataset = new DefaultCategoryDataset();

java专栏 875

JFreeChart样式设置大全

JFreeChart类: void setAntiAlias(boolean flag)    字体模糊边界 void setBackgroundImage(Image image)   背景图片 void setBackgroundImageAlignment(int alignment) 背景图片对齐方式(参数常量在org.jfree.ui.Align类中定义) void setBackgro...

weixin_40792763的博客 2076

声品质粗糙度matlab,声品质的应用分析方法

声品质的应用分析方法2016-04-05 09:18:57阅读次数:14198摘要:声品质分析在噪声的主观评价方面已经得到越来越多的应用。本文比较了声品质分析与传统计权声级的区别,并介绍了在声品质分析的实际应用中,针对稳态信号、非稳态信号的几种不同分析方法,以及各分析方法的要求和特点。关键词:声品质,响度,尖锐度,粗糙度,波动度1前言传统评价噪声的方法主要为计权声压级,用以反映声音的大小。但是人耳...

weixin_30767323的博客 2438

JFreeChart柱状图美化设置

后端根据数据输出柱状图表图片,使用JFreeChart快捷生成图表,并设置相关属性使其美化。

song_nan92的博客 1493

CocosCreator 面试题(十五)Cocos Creator如何内置protobuf JS版本?

接着,它创建了一个 Player 对象,并使用 protobuf.js 提供的 API 对其进行序列化和反序列化操作。其中,name 和 level 是普通的字段,items 是一个 repeated 字段,表示它可以包含多个值。在 Cocos Creator 中使用 protobuf.js,我们需要先加载 .proto 文件,然后使用 protobuf.js 提供的 API 进行序列化和反序列化操作。JSON和XML是文本格式,更易于阅读和调试,而且在对人类友好的接口和数据交换上更为常见和广泛支持。

w风雨无阻w的专栏 2628

基于FPGA的TDC延迟链优化与码密度校准方法(1)——原理与实现

本文深入探讨了基于FPGA的时间数字转换器(TDC)延迟链非均匀性问题及其码密度校准方法。通过分析工艺偏差、温度电压影响等根源,详细介绍了码密度测试原理、逐位校准技术及气泡消除算法,并分享了自适应校准策略与多场景应用实践,有效提升TDC测量精度至皮秒级。

kiwi8的博客 488

jfreechart 饼状图和柱状图 自定义填充图片

最近项目生成报表中,用户要求生成的饼图和柱图都不用颜色区分,用纹理填充来区分。饼图要求随机一块 隔离 出来,特别显示,柱图要求用柱图和折线图联合比较。 后台生成图表选择的工具是jfreechart,个人感觉功能相当齐全,网上相关资料也很多。但填充图片网上是真的找不到类似案例。没办法,研究了一下jfreechart  API ,终于还是给发现了解决方法。 正文  柱图填充 先了

zhiweixlw的博客 943

STM32+A4988控制步进电机

基于A4988芯片驱动42步进电机,在STM32F1上进行测试,最高可以实现16细分。

个人博客 4万+

使用 JFreeChart 创建动态图表:从入门到实战

在数据可视化的世界中,图表是展示数据的强大工具。无论是折线图、柱状图还是饼图,它们都能帮助我们更直观地理解数据。在 Java 生态中,JFreeChart 是一个功能强大且灵活的图表库,广泛应用于各种 Java 应用程序中。本文将带你从零开始学习如何使用 JFreeChart 创建动态图表,并结合实际代码示例,让你快速掌握其核心功能。JFreeChart 是一个开源的 Java 图表库,支持多种图表类型,包括:折线图(Line Chart)柱状图(Bar Chart)饼图(Pie Chart)

Mr_Wanter 2451

驱动钛丝(SMA)的应用(5)汽车腰托气阀常见问题及解决方案

财哥在前段时间发布的《驱动钛丝(SMA)的应用(1)汽车腰托支撑按摩气阀模块》一文,引发了很多企业的拜访和交流。 目前很多厂家已经启动或正在进行相关研发,同时也遇到了诸如:钛丝选型、驱动位移、响应设计、温度控制、力量设计、点动滞后、铆接工艺、量化生产等问题。

weixin_39168671的博客 1241

如何将 Fiori Elements Object Page Header 工具栏里按钮用 JavaScript 代码设置成禁用状态

本文介绍了如何在SAP Fiori Elements应用中动态控制Object Page工具栏按钮的可用状态。通过UI5 Inspector工具分析发现,这些按钮的enabled属性都双向绑定到/ui/enabled模型字段。在StatusExt.controller.js中,通过获取按钮ID前缀拼接完整控件ID,使用setEnabled(false)方法即可禁用按钮。关键点包括:1)使用extensionAPI获取视图ID前缀;2)注意事件回调中的this上下文绑定;3)通过修改模型字段可同步更新所有绑定

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 375

Java - JFreeChart和POI生成Excel图表的图片

需求:生成Excel时支持图表,包括折线图、柱状图、条形图、饼状图、散点图、面积图。 要求:1、开源免费;2、支持跨平台 设计: 1. 使用图片代替Excel中的图表,采用JFreeChart渲染生成图表图片。 2. 采用POI操作Excel。 以下是向Excel2003文件生成折线图的示例(先用JFreeChart生成图片,再用POI将图片加入Excel文件): 效果图: p...

y_j_zhang的博客 1119

AIPex:AI + 自然语言驱动的浏览器自动化扩展

AIPex是一款革命性的Chrome扩展,通过AI技术实现自然语言驱动的浏览器自动化。它支持30多种自动化工具,包括智能标签页管理(分组、切换、批量操作)、页面内容提取(文本、链接、元数据)、交互元素操作(点击、滚动)以及表单智能填写等功能。用户只需用自然语言下达指令,即可快速完成复杂的浏览器操作,大幅提升工作效率。AIPex特别适合需要处理大量重复性网页操作的用户,如数据分析师、产品经理等。

blues_C的博客 1127

使用JFreeChart在web中绘制图表

用JFreeChart绘制图表,可以绘制二维柱状图、三维柱状图、折线图、以及饼图,网上也有很多关于JFreeChart绘制图像的源码,但是还是需要自己去总结一下这个过程。          对于图表并不陌生,office word中我们对数据进行分类汇总,最后在让我们自己把分类汇总的内容生成一个图表的样式。而在java web开发中,我们又一次遇见了,对于图表的汇总可选方案有多种,在这里使用的是

Xinghf 7098

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JFreeChart(使用一):生成折线图

一、介绍 JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种

Seven's 专栏 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

使用poi和jfreechart生成excel图表图片

最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西。有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现。 除此之外,也有一些功能只需要生成对应的图标样式的图片就好,我们实现的时候主要用了两种方式,一种就是由前台生成图片base64码,然后后台解码生成图片插入到excel,但是这种方式有 一定的局限性,也就是当某些功能需要后台定时生成excel

程序员涂小哥的技术博客 9093

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jfreechart各种图表生成源码练习

    jfreechart版本:0.9.20把下面三个类放一起就可以编译,可以查看各种图生成的效果。ChartFrame.java有错import java.awt.BorderLayout;import java.awt.Color;import java.awt.Image;import javax.swing.ImageIcon;import javax.s

程序员之路 3353

Jfreechart生成图表图片

1、先引入对应的依赖 <!--用于jfreechart生成图片 --> <dependency> <groupId>org.jfree</groupId> <artifactId>jfreechart</artifactId> <version>1.0.19</version> </dependen

tanqingfu1的博客 669

使用Jfreechart开发图表应用程序

http://www.cublog.cn/u/22331/showart.php?id=156028使用Jfreechart开发图表应用程序eric | 07 二月, 2006 09:58JFreeChart是基于Java平台的免费的图表库.它运行在java2(JDK 1.2.2或更高版本)平台上,并且使用Java 2D API进行制图。最新的版本是jfreechart-1.0.0-rc1,可

lxgood8的专栏 896

JFreeChart 生成5种图表(饼图、柱状图、堆叠柱状图、折线图、散点图)

1 Maven依赖 <!-- Hutool工具包 --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.6.2</version> </d

旭东怪的博客 6217

Java使用jfreechart生成pdf图表

java语言,使用jfreechart生成PDF折线图,饼状图,柱状图,组合图等图表

菜菜小菠菠的博客,专注于后端技术 1935

JFreeChart学习笔记

JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产...

qq_34039060的博客 493

JfreeChart与struts2结合生成直方图

(1)生成对应的DataSet如直方图CategoryDataset、折线图CategoryPlot (2)使用ChartFactory生成与DataSet相对应的Chart同时生成X/Y轴的数字(3)设置Chart的X轴,Y轴上字体格式,(4)生成报表。

AS_MSDN的专栏 926

Java实战:利用JFreeChart高效生成Word图表(附中文乱码完美解决方案)

🔥 本文深度解析如何通过JFreeChart在Java中动态生成专业级图表(柱状图、饼图、折线图),并一键嵌入Word文档!针对开发者痛点,提供: ✅ ​中文乱码终极解决方案:从字体注册到全局样式配置,彻底解决JFreeChart中文显示问题。 ✅ ​全流程代码封装:工具类直接复用,支持模板定位、图表插入、样式自适应,提升开发效率。 ✅ ​企业级应用场景:结合Apache POI实现自动化报告生成,覆盖医疗健康、数据分析等真实案例。 ✅ ​避坑指南+效果对比:附完整源码、依赖配置及导出效果图,助你轻松打造

Zyw907155124的博客 3128

【JAVA图表】Jfreechart常用图表总结

这个寒假在学习机器学习,很多案例中的数据集需要用图表呈现,因此,我总结了一些常用的图表代码,为日后使用提供方便。        说明:以下的代码只涉及极少一部分jfreechart的API,如果想进一步了解,请访问它的主页http://www.jfree.org/jfreechart/ 。并且,以下的代码均不可以直接复制然后运行,需要进一步实现自己的数据集,数据集的接口,我已经预留,大家实现即可

C_son的专栏 4305
上一篇: MySQL 字符串函数:字符串截取
下一篇: 验证码 servlet实现
wlxtaking
博客等级 码龄17年 51粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值