文档章节

jfreechart 的一般配置显示

放手的风筝
 放手的风筝
发布于 2016/04/21 10:47
字数 721
阅读 9
收藏 0
  1 package kite.struts2.action;
  2 
  3 
  4 import java.awt.Font;
  5 
  6 import javax.annotation.Resource;
  7 
  8 import kite.domain.Question;
  9 import kite.domain.statistics.OptionStatisticsModel;
 10 import kite.domain.statistics.QuestionStatisticsModel;
 11 import kite.service.StatisticsService;
 12 
 13 import org.jfree.chart.ChartFactory;
 14 import org.jfree.chart.JFreeChart;
 15 import org.jfree.chart.plot.PiePlot;
 16 import org.jfree.chart.plot.PlotOrientation;
 17 import org.jfree.data.category.DefaultCategoryDataset;
 18 import org.jfree.data.general.DefaultPieDataset;
 19 import org.jfree.util.Rotation;
 20 import org.springframework.context.annotation.Scope;
 21 import org.springframework.stereotype.Controller;
 22 
 23 
 24 /**
 25  * 针对非矩阵式题型的设计,可有饼图 柱状图 折线图等
 26  */
 27 @Controller("chartOutputAction")
 28 @Scope("prototype")
 29 public class ChartOutputAction extends BaseAction<Question> {
 30     private static final long serialVersionUID = -9021947290801678287L;
 31     /* 平面饼图 */
 32     private static final int CHARTTYPE_PIE_2D = 0;
 33     /* 立体饼图 */
 34     private static final int CHARTTYPE_PIE_3D = 1;
 35     /* 水平平面柱状图 */
 36     private static final int CHARTTYPE_BAR_2D_H = 2;
 37     /* 竖直平面柱状图 */
 38     private static final int CHARTTYPE_BAR_2D_V = 3;
 39     /* 水平立体柱状图 */
 40     private static final int CHARTTYPE_BAR_3D_H = 4;
 41     /* 竖直立体柱状图 */
 42     private static final int CHARTTYPE_BAR_3D_V = 5;
 43     /* 平面折线图 */
 44     private static final int CHARTTYPE_LINE_2D = 6;
 45     /* 立体折线图 */
 46     private static final int CHARTTYPE_LINE_3D = 7;
 47 
 48     // 图表类型
 49     private int chartType;
 50     // 对哪个问题进行统计
 51     private Integer qid;
 52 
 53     // 注入统计服务
 54     @Resource
 55     private StatisticsService ss;
 56 
 57     /**
 58      * 生成图表并输出到浏览器
 59      */
 60     public String execute() {
 61         return SUCCESS;
 62     }
 63 
 64     @SuppressWarnings("deprecation")
 65     public JFreeChart getChart() {
 66         JFreeChart chart = null ;
 67         try {
 68             Font font = new Font("宋体", 0, 20);// 字体
 69             QuestionStatisticsModel qsm = ss.statistics(qid);
 70             DefaultPieDataset pieds = null;// 饼图的数据集
 71             DefaultCategoryDataset cateds = null;// 种类数据集
 72             //构造数据集
 73             if(chartType < 2){
 74                 pieds = new DefaultPieDataset();
 75                 for (OptionStatisticsModel om : qsm.getOsms()) {
 76                     pieds.setValue(om.getOptionLabel(), om.getCount());
 77                 }
 78             }
 79             else{
 80                 cateds = new DefaultCategoryDataset();
 81                 for (OptionStatisticsModel osm : qsm.getOsms()) {
 82                     cateds.addValue(osm.getCount(), osm.getOptionLabel(), "");
 83                 }
 84             }
 85             
 86             // 判断要求的图形
 87             switch (chartType) {
 88                 case CHARTTYPE_PIE_2D:// 平面饼图
 89                     chart = ChartFactory.createPieChart(qsm.getQuestion().getTitle(), pieds, true, false, false);
 90                     break ;
 91                 case CHARTTYPE_PIE_3D:// 立体饼图
 92                     chart = ChartFactory.createPieChart3D(qsm.getQuestion().getTitle(), pieds, true, true, true);
 93                     //设置前景色透明度
 94                     chart.getPlot().setForegroundAlpha(0.6f);
 95                     break ;
 96                 case CHARTTYPE_BAR_2D_H:// 平面条形图
 97                     chart = ChartFactory.createBarChart(qsm.getQuestion().getTitle(), "", "", cateds,
 98                             PlotOrientation.HORIZONTAL, true, true, true);
 99                     break ;
100                 case CHARTTYPE_BAR_2D_V:// 平面条形图
101                     chart = ChartFactory.createBarChart(qsm.getQuestion().getTitle(), "", "", cateds,
102                             PlotOrientation.VERTICAL, true, true, true);
103                 case CHARTTYPE_BAR_3D_H:// 平面条形图
104                     chart = ChartFactory.createBarChart3D(qsm.getQuestion().getTitle(), "", "", cateds,
105                             PlotOrientation.HORIZONTAL, true, true, true);
106                 case CHARTTYPE_BAR_3D_V:// 平面条形图
107                     chart = ChartFactory.createBarChart3D(qsm.getQuestion().getTitle(), "", "", cateds,
108                             PlotOrientation.VERTICAL, true, true, true);
109                     break ;
110                 //
111                 case CHARTTYPE_LINE_2D:// 平面条形图
112                     chart = ChartFactory.createLineChart(qsm.getQuestion().getTitle(), "", "", cateds,
113                             PlotOrientation.VERTICAL, true, true, true);
114                     break ;
115                 case CHARTTYPE_LINE_3D:// 平面条形图
116                     chart = ChartFactory.createLineChart3D(qsm.getQuestion().getTitle(), "", "", cateds,
117                             PlotOrientation.HORIZONTAL, true, true, true);
118                     break ;
119             }
120             //设置标题和提示条中文
121             chart.getTitle().setFont(font);
122             chart.getLegend().setItemFont(font);
123             //chart.setBackgroundImageAlpha(0.2f);
124         
125             //设置饼图特效
126             if(chart.getPlot() instanceof PiePlot){
127                 PiePlot pieplot = (PiePlot) chart.getPlot();
128                 pieplot.setLabelFont(font);
129                 pieplot.setExplodePercent(0, 0.1);
130                 pieplot.setStartAngle(-15);
131                 pieplot.setDirection(Rotation.CLOCKWISE);
132                 pieplot.setNoDataMessage("No data to display");
133                 //pieplot.setForegroundAlpha(0.5f);
134                 //pieplot.setBackgroundImageAlpha(0.3f);
135             }
136             //设置非饼图效果
137             else{
138                 chart.getCategoryPlot().getRangeAxis().setLabelFont(font);
139                 chart.getCategoryPlot().getRangeAxis().setTickLabelFont(font);
140                 chart.getCategoryPlot().getDomainAxis().setLabelFont(font);
141                 chart.getCategoryPlot().getDomainAxis().setTickLabelFont(font);
142             }
143         } catch (Exception e) {
144             e.printStackTrace();
145         }
146         return chart ;
147     }
148 
149     public int getChartType() {
150         return chartType;
151     }
152 
153     public void setChartType(int chartType) {
154         this.chartType = chartType;
155     }
156 
157     public Integer getQid() {
158         return qid;
159     }
160 
161     public void setQid(Integer qid) {
162         this.qid = qid;
163     }
164 }

 

© 著作权归作者所有

放手的风筝
粉丝 14
博文 60
码字总数 50362
作品 0
浦东
程序员
私信 提问
使用 JFreeChart来创建基于web的图表

WWW的发展使得基于因特网的应用程序不再局限于静态或者简单的动态内容提供。传统的一些以软件包形式发布应用程序例如报表系统等都在逐渐搬到因特网上。 但是这两者之间有着天壤之别,虽然对于...

红薯
2008/10/05
4.6K
8
JFreeChart 绘制折线图问题

这是我绘制折线图的代码,数据我都存在 ExcelObject excel 这个对象里面, 我要绘制三条折线,但这三条折线的数据差异比较大,所以没法再一个屏幕上全部显示三条折线,有什么好的办法让三条折...

小边
2015/01/23
354
1
JFreeChart学习示例

JFreeChart 是Java平台上一个开放的图表绘制类库,它完全使用Java语言编写,是为applications, applets, servlets 以及JSP等使用所设计。 JFreeChart可以生成饼图(pie)、柱状图(bar)、散...

长平狐
2013/01/06
154
0
通过鼠标拖动来修改JFreeChart序列值

通过鼠标拖动来修改JFreeChart序列值 最近因一个应用的需要,要通过鼠标的拖动来修改序列的值,在网上查了好多资料,都没有找到好的实现,在CSDN也有不少这方面的询问贴子。在参考网上前人资...

郭先生
2010/11/26
365
2
目前能够找到的最有效的 JFreeChart 中文乱码解决方案

由于JFreeChart组件的版本、操作平台、JDK 的设置等因素,在使用 JFreeChart 组件时可能会出现中文乱码的现象。遇到此问题时,可通过设置文字的字体来解决问题。在此提供以下两种解决此问题的...

苗哥
2013/09/06
3.1K
0

没有更多内容

加载失败,请刷新页面

加载更多

安全组和云防火墙的区别

前言 熟悉云平台的朋友可能都会注意到这样一个事情:无论公有云还是私有云,创建虚拟机的时候都需要选择安全组,来对虚拟机进行安全防护;有的云平台在VPC里,还能选择防火墙,ZStack在3.6版...

ZStack社区版
35分钟前
3
0
教育性app开发的重要性和好处

在这个精通技术的世界中,流行的app主导着无聊的教育系统。当我们将技术和教育结合在一起时,它将带来当代以及强大的学习资源。因此,将教育移动app集成到您的学习过程中,并根据自己的信念把...

a429011717
36分钟前
4
0
IE6/7/8如何兼容CSS3属性

本文转载于:专业的前端网站➩IE6/7/8如何兼容CSS3属性 最近在工作中总是要求IE8兼容CSS3属性,在网上搜了搜主要是引入了一个htc文件(ie-css3.htc或者PIE.htc。个人认为这两个文件的作用差不...

前端老手
51分钟前
5
0
手把手教你ALLEGRO的约束规则的设置教程!

约束规则的设置 分三步, 定义规则(一、基本约束规则设置:1、线间距设置;2、线宽设置;3、设置过孔;4、区域约束规则设置;5、设置阻抗;6、设置走线的长度范围;7、设置等长:7.1、不过电阻的NET 等...

demyar
53分钟前
5
0
完美解决H5滚动滑动穿透方案:不使用系统滚动

网上有很多黑科技解决这个问题,都不是从根本去解决,例如通过js控制弹出时html加上position:fixed; 弹窗关闭后再去掉该样式,总觉得不太对,像是打补丁。 今天终于找到了滚动穿透的原因和完...

未来cc
58分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部