JFreeChart柱状图3D多色百分比JSP输出JPG代码2

来源:百度文库 编辑:神马文学网 时间:2024/04/30 00:41:43

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory,
java.awt.*,
java.text.*,
org.jfree.chart.renderer.category.*,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.*,
org.jfree.chart.axis.*,
org.jfree.chart.labels.*,
org.jfree.data.*,
org.jfree.ui.*,
org.jfree.chart.*,

org.jfree.data.category.*" %>
<%!
  static class CustomRenderer extends BarRenderer3D {
    public Paint getItemPaint(int i, int j) {
      return colors[j % colors.length];
    }
    private Paint colors[];
    public CustomRenderer(Paint apaint[]) {
      colors = apaint;
    }
  }
%>
<%
int a=5,b=6,c=3,d=9,e=2;
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue((double)a/(a+b+c+d+e), "广州", "苹果");
dataset.addValue((double)b/(a+b+c+d+e), "广州", "梨子");
dataset.addValue((double)c/(a+b+c+d+e), "广州", "葡萄");
dataset.addValue((double)d/(a+b+c+d+e), "广州", "芒果");
dataset.addValue((double)e/(a+b+c+d+e), "广州", "荔枝");
JFreeChart chart = ChartFactory.createBarChart3D("水果销量统计图",
                                                   "水果",
                                                   "销量",
                                                   dataset,
                                                   PlotOrientation.VERTICAL,
                                                   false,
                                                   false,
                                                   false);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setForegroundAlpha(0.9f);
NumberAxis verticalAxis = (NumberAxis) plot.getRangeAxis();
verticalAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
verticalAxis.setVisible(false);
CategoryPlot categoryplot = chart.getCategoryPlot();
categoryplot.setNoDataMessage("!");

CustomRenderer customrenderer = new CustomRenderer(new Paint[] {
  Color.red, Color.blue, Color.yellow, Color.orange, Color.green, Color.cyan, Color.magenta, Color.blue
});
NumberFormat nfP = NumberFormat.getPercentInstance();
nfP.setMaximumFractionDigits(2); //百分数格式
customrenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",nfP));
customrenderer.setItemLabelsVisible(true);
ItemLabelPosition itemlabelposition = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER, TextAnchor.CENTER, 0D);
customrenderer.setPositiveItemLabelPosition(itemlabelposition);
customrenderer.setItemLabelFont(new Font("", Font.PLAIN, 36));
categoryplot.setRenderer(customrenderer);

ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 100, chart, 800, 600, null);
%>