图形统计简单示例

1). 加入 jar 包:
Struts2中的包:
struts2-jfreechart-plugin-2.3.15.3.jar

jfreechart-1.0.13中的包:

jcommon-1.0.16.jar
jfreechart-1.0.13.jar
iText-2.1.5.jar

2). 具体使用参见: struts-2.3.15.3-all/struts-2.3.15.3/docs/WW/docs/jfreechart-plugin.html

I:在目标action中加入以下代码

private JFreeChart chart ;

public JFreeChart getChart() {

return chart ;

}

II:在struts2中配置:

//默认继承的包需要改为: jfreechart-default

<package name= "default" namespace ="/" extends="jfreechart-default" >

<action name= "SurveyAction_generateChart" class="surveyAction" method="generateChart">

//返回类型为chart

<result name= "generateChart_success" type="chart" >

<param name= "width">400</param >

<param name= "height">300</param >

</result>

</action>

</package >

注解:

在struts2-jfreechart-plugin-2.3.4.jar包中配置了一个xml文件:

<struts>

<package name="jfreechart-default" extends="struts-default" >

<result-types >

<result-type name= "chart" class="org.apache.struts2.dispatcher.ChartResult" >

<param name= "height">150</param >

<param name= "width">200</param >

</result-type>

</result-types >

</package >

</struts>

III:

public String generateChart() {

System. out.println("generateChart" );

Map<String, Integer> map= new HashMap<>();

map.put( "AA", 10);

map.put( "BB", 35);

map.put( "CC", 56);

map.put( "FF", 78);

map.put( "RR", 90);

chart = JFreeChartUtils. getChart("Hi 妹子", map);

return "generateChart_success" ;

}

IIII:

public class JFreeChartUtils {

public static JFreeChart getChart(String title, Map<String, Integer> data) {

DefaultPieDataset dataset = new DefaultPieDataset();

Set<String> keySet = data.keySet();

for (String key : keySet) {

dataset.setValue(key, data.get(key));

}

// 利用工厂类来创建3D饼图

/**

*

* String title - 要创建的饼图的标题

* PieDataset dataset - 要创建的饼图所使用的数据集

* boolean legend - 是否显示图例

* boolean tooltips - 用于配置图形是否生成提示信息

* boolean urls - 配置图形是否生成 URL

*

*/

JFreeChart chart = ChartFactory.createPieChart3D(title, dataset,

truetrue , false);

// 使下说明标签字体清晰,去锯齿类似于

// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);的效果

chart.setTextAntiAlias( false);

// 图片背景色

chart.setBackgroundPaint(Color. white);

// 设置图标题的字体重新设置title(否组有些版本Title会出现乱码)

chart.getTitle().setFont(( new Font("隶书" , Font.CENTER_BASELINE , 20)));

// 设置图例(Legend)上的文字(//底部的字体)

chart.getLegend().setItemFont( new Font("隶书" , Font.CENTER_BASELINE , 15));

PiePlot3D plot = (PiePlot3D) chart.getPlot();

// 图片中显示百分比:默认方式

// 指定饼图轮廓线的颜色

plot.setBaseSectionOutlinePaint(Color. BLACK);

plot.setBaseSectionPaint(Color. BLACK);

// 设置无数据时的信息

plot.setNoDataMessage( "无对应的数据,请重新查询。" );

// 设置无数据时的信息显示颜色

plot.setNoDataMessagePaint(Color. red);

// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位

plot.setLabelGenerator( new StandardPieSectionLabelGenerator(

"{0}={1}({2})", NumberFormat.getNumberInstance(),

new DecimalFormat("0.00%" )));

// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例

plot.setLegendLabelGenerator( new StandardPieSectionLabelGenerator(

"{0}({2})"));

plot.setLabelFont( new Font("隶书" , Font.TRUETYPE_FONT, 12));

// 指定图片的透明度(0.0-1.0)

plot.setForegroundAlpha(0.65f);

// 指定显示的饼图上圆形(false)还椭圆形(true)

plot.setCircular( falsetrue );

// 设置第一个 饼块section 的开始位置,默认是12点钟方向

plot.setStartAngle(90);

// 设置分饼颜色(不设置它会自己设置)

// plot.setSectionPaint(pieKeys[0], new Color(244, 194, 144));

// plot.setSectionPaint(pieKeys[1], new Color(144, 233, 144));

return chart;

}

}

IV:在页面进行显示

< img alt ="" src="${pageContext.request.contextPath} /SurveyAction_generateChart.action" >

以上是一个简单示例想要复杂些的可以查看jfreechart-1.0.13中的包中示例。

时间: 2024-10-18 18:11:09

图形统计简单示例的相关文章

JAVA简单Swing图形界面应用示例

package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗口 * @author lenovo * */ public class HelloSwing { public static void main(String[] args) { JFrame frame=new JFrame("hello Swing"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLO

Redis 安装与简单示例

Redis 安装与简单示例 一.Redis的安装 Redis下载地址如下:https://github.com/dmajkic/redis/downloads 解压后根据自己机器的实际情况选择32位或者64位.下载解压后图片如下: redis-server.exe redis服务器的daemon启动程序 redis.conf redis配置文件 redis-cli.exe redis命令行操作工具.当然,也可以用telnet根据其纯文本协议来操作 redis-check-dump.exe 本地数

BitSet的使用场景及简单示例

BitSet简介 类实现了一个按需增长的位向量.位 set 的每个组件都有一个boolean值.用非负的整数将BitSet的位编入索引.可以对每个编入索引的位进行测试.设置或者清除.通过逻辑与.逻辑或和逻辑异或操作,可以使用一个BitSet修改另一个BitSet的内容. 默认情况下,set 中所有位的初始值都是false. 每个位 set 都有一个当前大小,也就是该位 set 当前所用空间的位数.注意,这个大小与位 set 的实现有关,所以它可能随实现的不同而更改.位 set 的长度与位 set

一则简单示例看Oracle的“无私”健壮性

Oracle的强大之处就在于他能总帮助让你选择正确的执行计划,即使你给了它错误的指示. 实验: 1. 创建测试表: 收集统计信息: 创建B树索引: 2. 执行select id from tbl_plan;查看它的执行计划: 因为创建了B树索引,正常讲可以从索引中获得id的值,不用全表扫描,但这里使用了全表扫描的方式. 即使使用了HINT,这依旧使用的是全表扫描: 原因在于这是个B树索引,不会存储NULL值,尽管这张表没有NULL值.如果直接从可能包含NULL值的B树索引中查询记录,NULL值不

AMQP消息队列之RabbitMQ简单示例

前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个图来概览下: 1.添加Maven依赖 <!-- rabbitmq begin --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit

HMM的维特比算法简单示例

今天读了一位大牛的关于HMM的技术博客,读完之后,写了一个关于维特比算法的简单示例,用scala和java语言混合编写的.现在上传之. package com.txq.hmm import java.utilimport scala.collection._ /** * HMM维特比算法,根据显示状态链条估计隐式链条 * @param states 隐式states * @param observations 显式states * @param start_probability 初始概率向量

spring-servlet.xml简单示例

spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 1 <!-- springMVC简单配置 --> 2 <?xml version="1.0" encoding="UTF-8"?> 3 <beans xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://w

关于Ajax实现的简单示例

一.代码示例 关于Ajax的基本概念(包括XMLHttpRequest对象及其相关方法属性)移步这里(w3school中文版)学习了解. <!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>使用Ajax异步加载数据</title> <script type = "text/javasc

【转】bind简单示例

bind简单示例代码 namespace { class placeholder_ {}; placeholder_ __1; } template <typename R, typename T, typename Arg> class simple_bind_t { private: typedef R (T::*F)(Arg); F f_; T* t_; Arg& a_; public: simple_bind_t(F f, T* t, Arg &a) : f_(f),