码迷,mamicode.com
首页 > 其他好文 > 详细

图形统计简单示例

时间:2015-04-07 13:43:36      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

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
 
     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,
                    true, true , 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( false, true );
           // 设置第一个 饼块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中的包中示例。
 
 
 
 

图形统计简单示例

标签:

原文地址:http://www.cnblogs.com/lflx/p/4398030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!