使用JFreeChart生成热点图表

http://pfwang.iteye.com/blog/88927

<一>前言:

  JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目。它的功能十分强大,能创建饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等,并可生成PNG或JPG图片格式文件。
  本人在学习过程中发现,网上很多文章都是讲一些JFreeChart的基本应用,而对JFreeChart生成热点图表这样常用的功能虽有所提及却没有一个完整的例子,所以我就写一个简单示例供大家参考,希望对大家的学习有所帮助。

  <二>示例说明:

  假设有一个关于程序员北京,上海,广洲三地程序员学历,开发语言,薪金情况的调查。首先要以饼图显示程序员学历的分布情况(index.jsp)。点击饼图的每一部分会以柱状图显示该层次程序员所用开发语言和薪金的情况(barview.jsp)。重点演示怎样在饼图上添加链接。

  <三>准备工作:

  1.下载最新版本的JFreeChart,当前为jfreechart-1.0.0-rc1
下载地址:http://www.jfree.org/jfreechart/index.html

  2.解压文件,将jfreechart-1.0.0-rc1/lib下的jcommon-1.0.0-rc1.jar,jfreechart-1.0.0-rc1.jar复制到WEB应用的lib目录下。

  3.在web.xml文件中增加以下内容:

<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/servletDisplayChart</url-pattern>
</servlet-mapping>

  <四>饼图页面代码(index.jsp)


<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.chart.*"%>
<%@ page import="org.jfree.chart.plot.*"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.labels.StandardPieItemLabelGenerator"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="java.io.*"%>
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=GBK">
<TITLE>nacl_zhuang@hotmail.com</TITLE>
</HEAD>
<BODY>
<%

DefaultPieDataset data = new DefaultPieDataset();
data.setValue("高中以下",370);
data.setValue("高中",1530);
data.setValue("大专",5700);
data.setValue("本科",8280);
data.setValue("硕士",4420);
data.setValue("博士",80);

PiePlot3D plot = new PiePlot3D(data);//3D饼图
plot.setURLGenerator(new StandardPieURLGenerator("barview.jsp"));//设定链接
JFreeChart chart = new JFreeChart("",JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色
chart.setTitle("程序员学历情况调查表");//可选,设置图片标题
plot.setToolTipGenerator(new StandardPieItemLabelGenerator());
StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);
PrintWriter w = new PrintWriter(out);//输出MAP信息
//500是图片长度,300是图片高度
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
ChartUtilities.writeImageMap(w, "map0", info, false);

String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;

%>

<P ALIGN="CENTER">
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#map0">
</P>
</BODY>
</HTML>

  生成的图片如下


  在浏览器中点右键->查看源文件会发现有以下一段HTML代码:

<map id="map0" name="map0">
<area shape="poly" coords="247,61,250,61,250,123,250,123" title="博士 = 80" alt="" href="barview.jsp?category=博士&pieIndex=0"/>
<area shape="poly" coords="148,112,153,102,160,92,170,83,182,76,196,70,212,65,229,62,247,61,250,123,250,123" title="硕士 = 4,420" alt="" href="barview.jsp?category=硕士&pieIndex=0"/>
<area shape="poly" coords="324,167,311,173,297,179,282,182,266,185,250,186,234,185,217,183,202,179,188,173,175,167,
  165,159,157,151,151,142,147,132,146,122,148,112,250,123,250,123" title="本科 = 8,280" alt=""
 href="barview.jsp?category=本科&pieIndex=0"/>
<area shape="poly" coords="307,72,324,80,338,91,347,103,352,117,352,131,347,144,338,156,324,167,250,123,250,123" title="大专 = 5,700" alt="" href="barview.jsp?category=大专&pieIndex=0"/>
<area shape="poly" coords="261,62,285,65,307,72,250,123,250,123" title="高中
 = 1,530" alt="" href="barview.jsp?category=高中&pieIndex=0"/>
<area shape="poly" coords="250,61,261,62,250,123,250,123" title="高中以下 = 370" alt="" href="barview.jsp?category=高中以下&pieIndex=0"/>
</map>


  这就是MAP信息,我们在IMG标签中加入usemap="#map0"就可以为饼图的每一部分加入链接。

  <五>柱状图页面代码:(barview.jsp)

<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=GBK">
<TITLE>nacl_zhuang@hotmail.com</TITLE>
</HEAD>

<body>

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.*"%>
<%
CategoryDataset dataset;
String category=request.getParameter("category");
category= new String(category.getBytes("ISO8859_1"), "GBK");
if(category.equals("本科")||category.equals("高中")||category.equals("大专"))
{
 dataset=getDataSet();
}
else if(category.equals("硕士")||category.equals("博士"))
{
 dataset=getDataSet2();
}else
{
 dataset=getDataSet3();
}
String title=category+"程序员在各城市薪金情况统计";
JFreeChart chart = ChartFactory.createBarChart3D(title,
"城市",
"薪金",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false);

String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<P ALIGN="CENTER">
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
</P>
<%!
private static CategoryDataset getDataSet() {
 DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 dataset.addValue(2000, "北京", "VB");
 dataset.addValue(1800, "上海", "VB");
 dataset.addValue(2200, "广州", "VB");
 dataset.addValue(3200, "北京", "JAVA");
 dataset.addValue(3500, "上海", "JAVA");
 dataset.addValue(3600, "广州", "JAVA");
 dataset.addValue(3300, "北京", "DOT NET");
 dataset.addValue(3400, "上海", "DOT NET");
 dataset.addValue(3700, "广州", "DOT NET");
 dataset.addValue(2500, "北京", "DELPHI");
 dataset.addValue(2800, "上海", "DELPHI");
 dataset.addValue(3200, "广州", "DELPHI");
 dataset.addValue(5000, "北京", "VC");
 dataset.addValue(3500, "上海", "VC");
 dataset.addValue(4600, "广州", "VC");
 return dataset;
}
private static CategoryDataset getDataSet2() {
 DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 dataset.addValue(2000, "上海", "VB");
 dataset.addValue(3000, "北京", "JAVA");
 dataset.addValue(3330, "上海", "JAVA");
 dataset.addValue(3500, "广州", "JAVA");
 dataset.addValue(3500, "北京", "DOT NET");
 dataset.addValue(4000, "上海", "DOT NET");
 dataset.addValue(4800, "广州", "DOT NET");
 dataset.addValue(2600, "北京", "DELPHI");
 dataset.addValue(2200, "上海", "DELPHI");
 dataset.addValue(4000, "北京", "VC");
 dataset.addValue(4000, "上海", "VC");
 dataset.addValue(4200, "广州", "VC");
 return dataset;
}
private static CategoryDataset getDataSet3() {
 DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 dataset.addValue(2100, "北京", "VB");
 dataset.addValue(2200, "上海", "VB");
 dataset.addValue(2100, "广州", "VB");
 dataset.addValue(3000, "北京", "JAVA");
 dataset.addValue(3200, "上海", "JAVA");
 dataset.addValue(3600, "广州", "JAVA");
 dataset.addValue(4100, "北京", "DOT NET");
 dataset.addValue(4200, "上海", "DOT NET");
 dataset.addValue(4160, "广州", "DOT NET");
 dataset.addValue(2400, "北京", "DELPHI");
 dataset.addValue(2600, "上海", "DELPHI");
 dataset.addValue(2500, "广州", "DELPHI");
 dataset.addValue(5400, "北京", "VC");
 dataset.addValue(5000, "上海", "VC");
 dataset.addValue(5500, "广州", "VC");
 return dataset;
}
%>
</body>
</html>

  生成图片如下:


  <六>后记

  1.这是本人发表的第一篇文章,如有不妥之处,请大家指正。

  2.本人以程序员学历调查为例,实属对很多企业不接受低学历程序员的现象身有感触。本人认为,如果一个低学历的人真正的的想做程序员,他就会比其他人更加刻苦学习更多的知识。如果一个企业愿意用一个没有学历的程序员,他也会对这家企业心存感激,认真工作,不会轻易跳槽。
AI Agent技术架构与规模化应用:2025年技术深度解析 2025年,AI Agent(人工智能智能体)迎来了规模化应用的拐点时刻。根据Gartner等权威机构预测,企业软件中整合自主型AI的比例将从2024年的不足1%跃升至2028年的33%。本文深入剖析AI Agent的核心技术架构,从规划模块、记忆模块、工具调用模块到底层实现原理,结合Python和Go语言的实际代码示例,全面阐述AI Agent的技术实现路径。同时,本文探讨多智能体协作系统、企业级部署架构以及未来的技术演进方向,为开发者和技术决策者提供系统性的技术参考。关键词:AI Agent、大语言模型 阅读详情

相关推荐

手把手教你用Chrome DevTools逆向分析抖音a_bogus参数(附完整日志插桩方法)

本文详细介绍了如何使用Chrome DevTools逆向分析抖音a_bogus参数的生成逻辑,包括XHR断点定位、日志插桩追踪和加密核心逻辑解析。通过实战案例,帮助开发者掌握逆向工程技巧,应对抖音接口的动态加密变化,特别适合研究dy接口和a_bogus参数的技术人员。

weixin_27741699的博客 786

jsp中使用JFreeChart生成热点图表的详细代码

<一>前言:  JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目。它的功能十分强大,能创建饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等,并可生成PNG或JPG图片格式文件。  本人在学习过程中发现,网上很多文章都是讲一些JFreeChart的基本应用,而对JFreeChart生成热点图表这样常用的功能虽有所提...

快乐天使 246

华为[ENSP]OSPF的配置实例(单区域+多区域)

华为[ENSP]OSPF的配置实例(单区域+多区域)

weixin_62594100的博客 2万+

使用JFreeChart生成热点图表实现交互作用

实现功能:     鼠标移到一个扇形区发生事件,使用json无刷新技术显示其他相关信息,在这里的例子中,以实现功能为目标,数据自己调整。     在这里运用到了Jfreechart,json,struts2框架技术。     添加支持架包支持,还有就是和struts2集成的架包支持     jsp如下:

我的一个小黑人 1318

嵌入式开发实战:LWIP中PPP协议配置全流程(含CHAP认证避坑指南)

本文是一份嵌入式开发实战指南,详细解析了如何在STM32平台上配置LWIP协议栈中的PPP协议,实现从串口到IP网络的完整连接。内容涵盖工程搭建、源码整合、关键配置、串口驱动绑定、状态管理以及CHAP认证等核心流程,并重点提供了CHAP认证失败的排查与避坑指南,帮助开发者高效打通嵌入式设备的网络连接。

plant的博客 461

MacOS蓝牙连接疑难杂症:从基础排查到高级修复全攻略

本文提供了一份全面的MacOS蓝牙故障排查与修复指南。从基础的菜单栏检查、终端命令诊断,到软/硬重启蓝牙服务、删除配置文件,再到使用blueutil工具、重置NVRAM等高级方法,系统性地解决了蓝牙无法连接、连接不稳定等常见问题。最后还分享了环境干扰排查、预防措施及硬件故障自检方法,帮助用户彻底解决Mac蓝牙连接难题。

weixin_29271263的博客 450

JfreeChart热点显示(鼠标提示)

JfreeChart热点显示(鼠标提示)     JfreeChart热点显示,就是将鼠标移到图片上时有信息显示,当鼠标移开时不再有信息显示,如图1。 要想实现该功能,首先必须得到一个map对象,通过标签中的usemap属性来指定map对象。 ” usemap=”#” /> 图1   该图的原始map数据如下:

bincavin的专栏 1586

【任何电机可使用的七段式s曲线-----包括matlab代码和simulink仿真】

S形加加速(T1)→>匀加速(T2)→减加速(T3)→>匀速(T4 )>加减速(T5)>匀减速(T6)-→>减减速(T7)

weixin_44312889的博客 6309

用JfreeChart创建热点图片

在实际项目开发中,尤其是报表开发经常要用来热点图片JAVA的开源项目JfreeChart提供了热点生成图片的方法这里介绍几种方法第一在JSP页面中:...@ page language="java" pageEncoding="UTF-8"%>...@ include file="/WEB-INF/jsp/include.jsp"%>...@ page import="org.

pluton的专栏 2401

GD32F470 DSP库移植避坑指南:从CMSIS版本冲突到AC6工程配置

本文详细解析了在GD32F470平台上移植CMSIS-DSP库的完整流程与关键避坑点。针对CMSIS版本冲突、AC6编译器下的浮点ABI配置、DSP库源文件添加等核心难题,提供了经过验证的解决方案,帮助开发者高效完成移植,确保硬件FPU正常工作并优化性能。

data3的博客 530

Camunda 7.x 系列【62】启动流程实例源码解析

为了更好的了解Camunda,接下来我们简单分析下启动流程实例相关源码

记录知识、锤炼自我 1171

JfreeChart的使用

JfreeChart的使用 一、JFreeChart 项目简介 JFreeChart是开放源代码站点SourceForge.net上的一个JAVA项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等。JFreeChart可以方便的与Swing相结合使用,还可以导入到Web页面中,更是可以方便的利用其工厂方法

学习笔记 1807

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

jfreechart与servlet的结合做折线图,实现热点

这两天在做项目,做性能监控的时候需呀用图表来直观的显示。选择了jfreechart。 中间遇到了不少的问题,但是经过两天的尝试,问题都被解决了。 jfreechart用到的jar包网上都有。    首先把servlet代码显示如下: package com.pzoom.crabman.servlet; import java.awt.Rectangle;import java.awt...

黑。 409

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

使用JfreeChart开发图表经验总结(含源码)

最近,公司一项目要出很多的图表。由于项目是B/S架构的,所以生成的图表也要考虑能在浏览器上动态显示。 生成基于浏览器的图表方式比较多。据我所知道的,常用的有三种:1、VML方式实现。这种方式是通过产生客户端的代码,由客户端根据代码生成相应的图表。但这种方式产生的图表有很多的局限性,

議誌戰勝①切 1280

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JFreeChart综合应用

JFreeChart是一个开源的JAVA项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业系统的要求。JFreeChart是一种基于JAVA语言的图表开发技术。JFreeChart可用于Servlet、JSP、Applet、Java Appication环境中,...

akingde 83

SAP B1中文培訓教材_SDK

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

JFreeChart API一览

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

songfuyu_1997的专栏 1809

java cutline_jfreechart热点图完整无乱码java-jsp版(柱状图)带鼠标提示

java代码package frdc.moss.jfreechart;import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.Rectangle;import java.awt.Shape;import java.io.IOException;import java.io.Pr...

weixin_35712223的博客 236

JFreeChart 来创建基于 web 的图表

JFreeChart 项目简介 JFreeChart 是开放源代码站点 SourceForge.net 上的一个 JAVA 项目,它主要用来各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 )、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。这些不同式样的图表基本上可以满足目前的要求。为了减少篇幅本文主要介绍前面三种类型的图表,读者可以触类旁通去开发其他样式的图表

u011857083的专栏 362
上一篇: jfreechart+sql实现时间曲线图(显示曲线数据点)
下一篇: JBPM工作流管理例子
topinking
博客等级 码龄20年 15粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值