jfreechart功能十分强大了,在我们平台中用到了柱图和曲线图,下面我就来讲讲这两种图,先讲曲线图,由于客户要看到每日的分钟走势图,所以就像股票的分时一样,我们要把每一天中每一分钟内的在线用户及访问量还有它们分别出现的峰值标示出来.由于是分钟走势啊,所以我们就用到了jfreechart中的TimeSeries,首先要用它来创建dataset,如果对jfreechart不了解的用户,自行去看guide手册,画图要分三步来进行,一,创建dataset,二,创建chart,三,生成图片
我们这里直接在数据库中把我们上文中生成的数据,取出来放到TimeSeries中,然后我们用jfreechart的工厂生成我们想要的曲线图,
TradeLogServiceImpl tradeService = (TradeLogServiceImpl) ctx.getBean("testtrade");
// user online
Map<Integer, Date> userPeak = new HashMap<Integer, Date>();
List<TradeUserOnline> list = tradeService.getUserOnline(start);
if (list.size() != 0) {
TimeSeries s1 = new TimeSeries("分钟在线用户", Minute.class);
for (int i = 0; i < list.size(); i++) {
TradeUserOnline userOnline = (TradeUserOnline) list.get(i);
s1.addOrUpdate(/*add(*/new Minute(userOnline.getOnlinetime()), userOnline.getOnlinecount());
userPeak.put(userOnline.getOnlinecount(), userOnline.getOnlinetime());
}
Object[] objs = userPeak.keySet().toArray();
java.util.Arrays.sort(objs);
userPeakValue = (Integer) objs[objs.length - 1];
userTime = userPeak.get(userPeakValue);
dataset.addSeries(s1);
} else {
logger.error(start+" 没有交易在线用户数据");
}
logger.info(start+" userPeakValue=" + userPeakValue);
logger.info(start+" userTime=" + userTime);
JFreeChart chart = ChartFactory.createTimeSeriesChart(start + " 每分钟在线用户走势图", // 图表标题
"时间", // 目录轴的显示标签
"用户数", // 数值轴的显示标签
dataset, // 数据集
true, // 是否显示图例()
false, // 是否生成工具
false // 是否生成URL链接
);
上面我们就生成了分钟在线用户的dataset,然后生成分钟在线用户的时间序列.peakvalue是峰值,peaktime是峰值出现的时间.我们下面会用这两个去做注释.
if (userPeakValue != null && accessPeakValue != null && accessTime != null && userTime != null) {
Font font = new Font("SansSerif", Font.BOLD, 12);
// 添加在线用户注释
XYTextAnnotation userAnn = new XYTextAnnotation(userPeakValue + " 峰值时间:\n\r" + format(userTime), userTime.getTime(), userPeakValue);
userAnn.setFont(font);
userAnn.setTextAnchor(TextAnchor.HALF_ASCENT_LEFT);
plot.addAnnotation(userAnn);
注意上面XYTextAnnotation 的构造方法,jfreechartAPI里后面两个参数是double,double,这里我们将时间系列的时间转化为long型的秒来用作domain axis,int型的值做为峰值,其实都是强制转化为double.这里一定要注意domain axis,我一开始陷入误区,以为timeseries的无法实现注释呢,后来经架构师一点拔,才悟出来的.:=(
生成图片的时候,我们可以将domain axis的日期格式化一下,
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
生成jfreechart图的最后一步是: 将chart用流输出到jsp页面上展示啊
用到jfreechart的类
//流的目的地,chart,及图片的宽和高
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart, width, height);
好了,时间系列图就完成了.下面我们来说下柱图
柱图用CategoryDataset来保存数据集合,一般用
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int i = 0; i < list.size(); i++) {
TradelogsCommon log = (TradelogsCommon) list.get(i);
String y = log.getOperatingresults();
if (y.equals("Y")) {
y = "成功";
} else if (y.equals("N")) {
y = "失败";
}
dataset.setValue(log.getOperatenumbers(), y, log
.getSalesdepcodename().getSalesdepname());
}
数据集合生成了然后再用chart工厂来生成柱图
JFreeChart chart = ChartFactory.createBarChart3D(start
+ " 按时间点 " + opt + "操作 访问量统计图", // 图表标题
"XXXX", // 目录轴的显示标签
"访问量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
.............
ChartUtilities.writeChartAsPNG(response.getOutputStream(), chart,
width, height);
最后还是用流将chart传输到页面上去生成图片.
分享到:
相关推荐
"JFreeChart+JSP实现统计图展示"是一个典型的Web应用程序开发案例,它结合了JFreeChart库、JavaServer Pages (JSP) 和Servlet技术,用于从SQL Server 2005数据库中提取数据并以图表的形式呈现。 **JFreeChart** 是...
标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...
jFreeChart 是一款强大的 Java 图表库,专用于创建各种统计图表,如柱状图、饼图、线图、雷达图等。它以其开源、免费的特性受到许多开发者青睐,适用于构建 C/S(客户端/服务器)、B/S(浏览器/服务器)以及实时环境...
本教程将详细介绍如何使用JFreeChart库使横轴的标题竖向显示,以解决这个问题。 首先,我们需要理解JFreeChart的构造和配置过程。创建一个图表通常涉及以下步骤: 1. 创建`CategoryDataset`:这是数据模型,存储...
<TITLE>JFreeChart 简单的例子 <H2>JFreeChart: 简单的例子 下面有两个简单的例子,调用servlet,生成统计图. 条形统计图 href="servlet/ServletDemo1">条形统计图; <!--跳转到ServletDemo1生成条形统计图--> 可以...
标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...
本篇文章将详细探讨JFreeChart库在3D绘图方面的功能,以及如何利用它来绘制柱状图和线形图的3D版本。 ### JFreeChart简介 JFreeChart是开源的Java类库,它提供了丰富的图表类型,如折线图、柱状图、饼图、散点图、...
3. 创建`ChartFactory`:通过`createXYLineChart()`或其他方法生成`JFreeChart`实例。 然后,我们要调整X轴的标签布局。JFreeChart提供了`CategoryAxis`类,它允许我们定制X轴的行为。为了使X轴标题竖直显示,我们...
3. 检查数据源是否包含非 ASCII 字符,这些字符可能需要特定的字体支持才能正确显示。 4. 如果是多语言环境,考虑使用支持多种语言的字体,如 Noto 字体系列。 5. 考虑使用 Unicode 编码,确保所有的字符都能被正确...
标题“解决jfreechart在Linux下无法显示中文”所涉及的知识点主要集中在Java图形库JFreeChart和在Linux操作系统中的字体配置。JFreeChart是一个强大的Java库,用于创建各种图表,如柱状图、饼图、线图等。在Windows...
本例子将详细介绍如何利用JFreeChart生成统计图,特别是柱状图和饼图。 首先,我们需要导入JFreeChart库。通常,这涉及到在项目中添加JFreeChart的jar包。在提供的压缩包中,`chartDemo`可能是包含示例代码的Java...
Java 利用 JFreeChart 实现数据统计图 在数据挖掘中,数据分析的结果需要直观地展现给用户,这就需要使用数据统计图。Java 中可以使用 JFreeChart 库来实现各种数据统计图,如柱形图、饼图、折线图等。下面将详细...
本教程将详细讲解如何在Struts2框架中使用JFreeChart来显示图片。 首先,我们需要了解JFreeChart的基本用法。JFreeChart提供了丰富的API,可以方便地创建和定制图表。以下是一般步骤: 1. **创建图表对象**:例如...
jfreechart高版本默认不能显示中文字符,这个修改后可以默认支持中文显示,不用重复设置
jfreechart-1.5.2.jar,jfreechart|jfreechart
在本篇文章中,我们将深入探讨如何利用JFreeChart 1.0.13版本,在JSP(JavaServer Pages)页面上创建和展示报表。首先,我们需要理解JSP的基本原理和JFreeChart的图表生成机制。 1. **JSP基础**: JSP是Java的一种...
5. **在 Web 应用中展示**:如果是在 Struts2 应用中,你可以使用 `struts2-jfreechart-plugin` 来在 Action 中生成图表并传递到页面显示。 在实际开发中,你可能还需要处理数据集(`Dataset`)的创建,这通常涉及 ...