分享

jfreechart画复合图(混合图)已做乱码处理

 oospace 2014-06-05
<%@page import="java.awt.geom.Rectangle2D"%>
<%@page import="org.jfree.chart.renderer.category.LineAndShapeRenderer"%>
<%@page import="org.jfree.chart.labels.ItemLabelPosition"%>
<%@page import="org.jfree.ui.TextAnchor"%>
<%@page import="org.jfree.chart.labels.ItemLabelAnchor"%>
<%@page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%>
<%@page import="org.jfree.chart.renderer.category.BarRenderer3D"%>
<%@page import="java.awt.Color"%>
<%@page import="org.jfree.chart.axis.ValueAxis"%>
<%@page import="org.jfree.chart.title.TextTitle"%>
<%@page import="org.jfree.data.general.DatasetUtilities"%>
<%@page import="org.jfree.data.category.CategoryDataset"%>
<%@page import="org.jfree.chart.axis.CategoryAxis"%>
<%@page import="java.awt.Font"%>
<%@page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@page import="org.jfree.data.category.DefaultCategoryDataset"%>
<%@page import="org.jfree.chart.plot.PlotOrientation"%>
<%@page import="org.jfree.chart.axis.NumberAxis"%>
<%@page import="org.jfree.chart.plot.CategoryPlot"%>
<%@page import="org.jfree.chart.ChartFactory"%>
<%@page import="org.jfree.chart.JFreeChart"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<% 

 

     String series1 = "申报数目";    
     String series2 = "通过数目";    
   
    
    
//   横轴名称(列名称)    
     String type1 = "2011年";    
     String type2 = "2012年";    
     String type3 = "2013年";    
     String type4 = "2014年";    
    
    
    
//   建立dataset    
     DefaultCategoryDataset dataset = new DefaultCategoryDataset();    
//   以下可以动态添加数据    
     dataset.addValue(500, series1, type1);    
     dataset.addValue(1200, series1, type2);    
     dataset.addValue(600, series1, type3);    
     dataset.addValue(400, series1, type4);    
    
    
     dataset.addValue(3000, series2, type1);    
     dataset.addValue(5000, series2, type2);    
     dataset.addValue(7800, series2, type3);    
     dataset.addValue(9000, series2, type4);    
        


    DefaultCategoryDataset zdataset=new DefaultCategoryDataset();
    zdataset.addValue(12000,"申报数目", "2011年");
    zdataset.addValue(3000,"通过数目", "2011年");
    zdataset.addValue(14000, "申报数目", "2012年");
    zdataset.addValue(5000, "通过数目", "2012年");
    zdataset.addValue(16000,"申报数目", "2013年");
    zdataset.addValue(7800,"通过数目","2013年");
    zdataset.addValue(17000, "申报数目", "2014年");
    zdataset.addValue(9000, "通过数目", "2014年");
  

//  建立chart   
   
    JFreeChart chart = ChartFactory.createLineChart(    
        "申报通过图表",       // chart title    
        "时间",                    // domain axis label    
        "通过数目",                   // range axis label    
        dataset,                   // data    
        PlotOrientation.VERTICAL,  // orientation    
        true,                      // include legend    
        true,                      // tooltips    
        false                      // urls    
    );    
    
    JFreeChart barchart=ChartFactory.createBarChart3D(
            "申报通过图表",
            "时间",//目录轴的显示标签
            "通过数目",//数值轴的显示标签
            zdataset,
            PlotOrientation.VERTICAL,//设置图表方向
            true,//复杂柱状图
            false,
            false        
    );
    
//   NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...    
    CategoryPlot plot = chart.getCategoryPlot();  //关键位置  
//   customise the range axis...    
    Font font = new Font("宋体",10,20); 
TextTitle tt = chart.getTitle(); //设置标题
tt.setFont(font); 
//纵轴字体
plot.getRangeAxis().setLabelFont(new Font("宋体", Font.BOLD, 15));
//横轴框里的标题字体
chart.getLegend().setItemFont(new Font("宋体", Font.ITALIC, 15));
//横轴列表字体
plot.getDomainAxis().setTickLabelFont(new Font("新宋体", 1, 15));
//横轴小标题字体
plot.getDomainAxis().setLabelFont(new Font("新宋体", 1, 12));
//设置背景色
//chart.setBackgroundPaint(Color.WHITE);
    NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();    
    rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());    
    rangeAxis.setAutoRangeIncludesZero(true);    
    rangeAxis.setUpperMargin(0.20);    
    rangeAxis.setLabelAngle(Math.PI / 2.0);    
   
    LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();    
  //注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
    renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
    renderer.setItemLabelAnchorOffset(10D);
//  renderer.setBaseShape(new Rectangle2D.Double(-1.5, -1.5, 3, 3), true);  //设置点    
    renderer.setShape(new Rectangle2D.Double(-1.5, -1.5, 3, 3));    
    renderer.setShapesVisible(true);    
    renderer.setSeriesPaint(3,Color.red);    
    renderer.setSeriesLinesVisible(3,false);    
    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示折点数据    
    renderer.setItemLabelsVisible(true);     
    CategoryPlot barplot = barchart.getCategoryPlot();  //关键位置
    BarRenderer3D zrenderer =(BarRenderer3D)barplot.getRenderer();
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
    zrenderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
    zrenderer.setItemLabelAnchorOffset(10D);
    zrenderer.setItemMargin(0);
    zrenderer.setMaximumBarWidth(0.05); //设置柱子宽度 
    //barplot.getRenderer()
    plot.setDataset(1,zdataset);
    plot.setRenderer(1, barplot.getRenderer());
    
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=530 height=320 border=0>
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约