关闭

S2SH jFreeChart 制作柱状图和饼图

标签: sshjfreechart
302人阅读 评论(0) 收藏 举报
分类:

除了ssh必须的包之外,还需要导入以下3个包:

jfreechart-1.0.14.jar;

jcommon-1.0.17.jar;

struts2-jfreechart-plugin-2.2.3.1.jar;


以球类投票的方式引入柱状图和饼图。


球类类别实体代码:

public class Category {
	private int id; //id主键
	private String sportsName; //种类名称
	private int num; //投票数目
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getSportsName() {
		return sportsName;
	}
	public void setSportsName(String sportsName) {
		this.sportsName = sportsName;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}


投票页面jsp代码:

	<form action="jFreeChartTest1.action" method="post">
	
		<input type="checkbox" name="sportsName" value="篮球">篮球<br>
		<input type="checkbox" name="sportsName" value="足球">足球<br>
		<input type="checkbox" name="sportsName" value="排球">排球<br>
		<input type="checkbox" name="sportsName" value="网球">网球<br>
		
		<input type="submit" value="投票">
		
	</form>

投票action代码:

 	public String jFreeChartTest1() {
 		String[] sports = ServletActionContext.getRequest().getParameterValues("sportsName");
 		
 		if(sports != null) {
	 		for(int i=0; i<sports.length; i++) {
	 			category = new Category();
	 			category = service.getCategoryByName(sports[i]); //获得对应的实体
	 			category.setNum(category.getNum() + 1); //投票数+1
	 			service.updateCategory(category); //更新
	 		}
 		} 		
 		return "success";	    	
 	}

投票struts.xml代码:

		<action name="jFreeChartTest1" class="jFreeChartAction" method="jFreeChartTest1">
			<result name="success">/showChart.jsp</result>			
		</action>

图表显示页面showChart.jsp代码:

<img alt="xxx" src="jFreeChartTest2.action">

图表显示action代码:

private JFreeChart chart; //取JFreeChart对象,名字必须为chart

    public JFreeChart getChart() {
        return chart;
    }
    
    public void setChart(JFreeChart chart) {
        this.chart = chart;
    }

 	/**
 	 * 解决乱码,但是一定要在生成图形之前调用
 	 */
 	public void setCharacter() {
 		// 创建主题样式
 		StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
 		// 设置标题字体
 		standardChartTheme.setExtraLargeFont(new Font("隶书", Font.BOLD, 12));
 		// 设置图例的字体
 		standardChartTheme.setRegularFont(new Font("宋书", Font.PLAIN, 12));
 		// 设置轴向的字体
 		standardChartTheme.setLargeFont(new Font("宋书", Font.PLAIN, 12));
 		// 应用主题样式
 		ChartFactory.setChartTheme(standardChartTheme);

 	}


1.柱状图:

public String jFreeChartTest2() {
 	setCharacter(); //解决中文乱码
    	DefaultCategoryDataset dataset = new DefaultCategoryDataset();    	
    	dataset.setValue(service.getCategoryByName("篮球").getNum(), "", "篮球");
    	dataset.setValue(service.getCategoryByName("足球").getNum(), "", "足球");
    	dataset.setValue(service.getCategoryByName("排球").getNum(), "", "排球");
    	dataset.setValue(service.getCategoryByName("网球").getNum(), "", "网球");
        chart = ChartFactory.createBarChart3D(
                "球类爱好图", // 图表标题
                "球类", // 目录轴的显示标签
                "喜爱人数", // 数值轴的显示标签
                 dataset, // 数据集
                 PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                 true,  // 是否显示图例(对于简单的柱状图必须是 false)
                 false, // 是否生成工具
                 false  // 是否生成 URL 链接
                );
        return "success";
}

2.饼图:

public String jFreeChartTest2() {
 	setCharacter();
    	
    	DefaultPieDataset dataPieSet = new DefaultPieDataset();
    	dataPieSet.setValue("篮球", service.getCategoryByName("篮球").getNum());
    	dataPieSet.setValue("足球", service.getCategoryByName("足球").getNum());
    	dataPieSet.setValue("排球", service.getCategoryByName("排球").getNum());
    	dataPieSet.setValue("网球", service.getCategoryByName("网球").getNum());
    	
        chart = ChartFactory.createPieChart3D("球类爱好图", dataPieSet, true, true, false);
	PiePlot3D piePlot = (PiePlot3D)chart.getPlot();
	piePlot.setBackgroundPaint(Color.WHITE);
	piePlot.setLabelFont(new Font("黑体",Font.BOLD,15));
	resetPlot(piePlot);
		
	return "success";
}
          //给饼图添加样式
      private static void resetPlot(PiePlot3D pieplot){
           String unitStyle = "{0}={1}({2})";
           
           pieplot.setNoDataMessage("没有对应的数据,请重新查询");
           pieplot.setNoDataMessageFont(new Font("华文行楷",Font.BOLD,21));
           pieplot.setNoDataMessagePaint(Color.BLUE);           
           
           //设置图例显示样式
           pieplot.setLabelGenerator(new StandardPieSectionLabelGenerator(
                   unitStyle,
                   NumberFormat.getNumberInstance(),
                   new DecimalFormat("0.00%"))
                     );
           //设置引用标签显示样式
           pieplot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator(
                unitStyle,
                NumberFormat.getNumberInstance(),
                new DecimalFormat("0.00%")));
          }

图表显示struts.xml代码:

注意:package要继承jfreechart-default

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

		<action name="jFreeChartTest2" class="jFreeChartAction" method="jFreeChartTest2">
			<result type="chart" name="success" >
				<param name="width">600</param>
				<param name="height">500</param>
			</result>			
		</action>

结束。

0
0
查看评论

SSH+Jquery-easyui-json数据实现增删改查,数据生成柱状图,饼状图,excel报表的导入导出

  • 2015-10-29 19:47
  • 31.41MB
  • 下载

Java SSH框架显示饼图和柱形图

  • 2014-09-08 17:14
  • 3.60MB
  • 下载

使用JFreeChart做成柱状图写入word的总结

1.用到以下jar包 2.准备好含有图片的word文档,另存问xml文件,改为freemark模板文件(ftl),用编译器找到 使用·JFreeChart做成柱形图,代码如下: 传入相应的数据,保存成jpg图片,转成Base64存入相应的模板变量里即可: 将...
  • smilegirlswyh
  • smilegirlswyh
  • 2017-02-24 19:15
  • 268

JFreeChart 实现各种数据统计图(柱形图,饼状图,折线图)

最近在做数据挖掘相关的工作,需要将数据分析的
  • FX_SKY
  • FX_SKY
  • 2014-09-24 11:04
  • 2994

使用JFreeChart生成饼图

package net.hncu.jfreechart; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jf...
  • crystalis
  • crystalis
  • 2014-07-24 13:34
  • 1024

关于JFreeChart中柱状图使用纹理图片填充的解决办法

前段时间,项目组有个业务需求,需要生成财务分析图表,开始采用的是FushionChart,因为这个简单,效果好看,功能也够强大,上线后不久,遇到了一个问题,就是用户需要将图表打印出来,没有彩色打印机,只有黑白打印机,所以光靠颜色来区分就很困难了。业务需求的老大对Excel挺熟的,他在Excel中画的...
  • xushengcheng
  • xushengcheng
  • 2010-11-23 16:45
  • 911

前端实现饼图、堆叠柱状图、折线图

我觉得根据框架的API,就能够修改样式,得到你想要的结果,灵活运用就好。 这两天做了’带图例还百分比的饼图‘,‘堆叠状的柱状图’,‘折线图’。 我使用的是highcharts这个框架,我觉得还是不错的,有详细的介绍和api。 另外,我在查资料的过程中,还发现的图表类的框架有jfreechart,&#...
  • java_zhaoyanli
  • java_zhaoyanli
  • 2016-09-08 18:26
  • 5266

jfreeChart 柱状图和折线图结合

import java.awt.Color; import java.awt.Font; import java.awt.GradientPaint; import java.awt.geom.Ellipse2D; import java.io.FileNotFoundException; ...
  • lx19860203
  • lx19860203
  • 2015-07-28 09:25
  • 1630

【POI】POI+JFREECHART实现图表报表

大部分的实现细节,均参考“生若蜉蝣_涂宗勋”的博客使用poi和jfreechart生成excel图表图片老哥写的很清楚,重复流程不再赘述。实现代码:1 整理数据// 整理GMV具体数据 DefaultCategoryDataset dataset = createDataset(data);2 设计...
  • xuexiiphone
  • xuexiiphone
  • 2017-05-16 10:43
  • 550

教你如何利用POI和JFreeChart框架实现生成Excel文件(生成 统计图)

首先,我介绍一下POI和JFreeChart吧,大家先上官网把这两个框架的jar包下载下来。我也打包上传了这两个jar放到了CSDN上 欢迎大家去下载。地址是  http://yangchao228.download.csdn.net/      ...
  • baiyangok
  • baiyangok
  • 2014-12-16 10:18
  • 1181
    个人资料
    • 访问:1818次
    • 积分:86
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类