• WEB中实现JFreeChart


    转载自:http://zl19830917.blog.163.com/blog/static/30200672007311457160/

    <jsp:directive.page import="org.jfree.util.Rotation"/><DIV class=code>
    <%@ page contentType="text/html;charset=GBK"%>
    <%@ page import="java.awt.Color, 
    java.awt.Font,
    org.jfree.chart.ChartFactory, 
    org.jfree.chart.JFreeChart,
    java.io.*, 
    org.jfree.chart.*,
    org.jfree.chart.plot.PlotOrientation, 
    org.jfree.chart.servlet.ServletUtilities, 
    org.jfree.data.general.DatasetUtilities, 
    org.jfree.chart.plot.CategoryPlot, 
    org.jfree.chart.axis.CategoryAxis, 
    org.jfree.chart.axis.ValueAxis, 
    org.jfree.chart.renderer.category.BarRenderer3D, 
    org.jfree.chart.labels.StandardCategoryItemLabelGenerator,
    org.jfree.data.category.CategoryDataset, 
    org.jfree.chart.renderer.category.BarRenderer,
    org.jfree.chart.entity.*,
    org.jfree.chart.urls.*,
    org.jfree.data.general.*,
    org.jfree.chart.plot.*,
    org.jfree.chart.labels.*,
    org.jfree.ui.*,
    java.util.*,
    java.text.*,
    org.jfree.chart.axis.AxisLocation"%>
    你好,我的webJFreeChart练习!<br>
    <%
    /////////////////生成柱状显示图以及图的map
    Random r=new Random();

    double[][] data = new double[][] {
    {672, 766, 223, 540, 126},
    {325, 521, 210, 340, 106},
    {r.nextInt(300), 256, 523, 240, 526}
    };
    String[] rowKeys = {"苹果","梨子","葡萄"};
    String[] columnKeys = {"北京","上海","广州","成都","深圳"};
    CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
    JFreeChart chart = ChartFactory.createBarChart3D("水果销量图统计",null,null,dataset,
    PlotOrientation.VERTICAL,true,true,true);

    CategoryPlot plot = chart.getCategoryPlot();
    BarRenderer3D renderer = new BarRenderer3D();

    //设置URL链接
    renderer.setItemURLGenerator(new StandardCategoryURLGenerator("xyChart.jsp","水果","城市")); 
    renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator()); 
    //显示柱状的值
    renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
    renderer.setItemLabelFont(new Font("黑体",Font.PLAIN,10));
    renderer.setItemLabelAnchorOffset(10.0D);
    //这是数值字体颜色
    renderer.setItemLabelPaint(Color.BLACK);
    //设置正数值位于柱上方
    renderer.setPositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE1,TextAnchor.HALF_ASCENT_RIGHT));
    //设置负数值位于柱上方
    renderer.setNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE2,TextAnchor.HALF_ASCENT_RIGHT));
    renderer.setItemLabelsVisible(true);
    plot.setRenderer(renderer);

    ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
    String filename = ServletUtilities.saveChartAsJPEG(chart, 500, 300, info, session); 
    PrintWriter w = new PrintWriter(out);//输出MAP信息 
    ChartUtilities.writeImageMap(w, "map", info, false);
    String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
    %>
    <img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%=filename %>"> 
    <%
    DefaultPieDataset data1 = new DefaultPieDataset(); 
    data1.setValue("高中以下",370); 
    data1.setValue("高中",1530); 
    data1.setValue("大专",5700); 
    data1.setValue("本科",8280); 
    data1.setValue("硕士",4420); 
    data1.setValue("博士",null); 
    %>
    <% 
    /////////////////生成饼状显示图以及图的map(添加了引出标签以及图例的显示样式)
    JFreeChart chart2 = ChartFactory.createPieChart3D(
    "饼型图",  // chart title
    data1,  // data
    true, // include legend
    true,
    false
    );
    chart2.setTitle("程序员学历情况调查表");//可选,设置图片标题 

    PiePlot plot2 = (PiePlot) chart2.getPlot();
    plot2.setURLGenerator(new StandardPieURLGenerator("baofeng.jsp"));//设定链接 

    plot2.setNoDataMessage("无对应的数据,请重新查询。");
    plot2.setNoDataMessagePaint(Color.red);
    //指定图片的透明度
    plot2.setForegroundAlpha(0.6f);
    //设置第一个 section 的开始位置,默认是12点钟方向
    //plot2.setStartAngle(180.0);

    //引出标签的字体
    plot2.setLabelFont(new Font("黑体",Font.PLAIN,12));

    //MAP中鼠标移上的显示格式
    plot2.setToolTipGenerator(new StandardPieToolTipGenerator("{0}有{1}人", new DecimalFormat("0"), new DecimalFormat("0.00%"))); 

    //忽略无值的分类
    plot2.setIgnoreNullValues(true);   
    //饼图的旋转方向
    plot2.setDirection(Rotation.ANTICLOCKWISE);

    //引出标签显示样式
    plot2.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} = {2}", new DecimalFormat("0"), new DecimalFormat("0.00%")));

    //图例显示样式
    plot2.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}", new DecimalFormat("0"), new DecimalFormat("0.00%")));

    ChartRenderingInfo info2 = new ChartRenderingInfo(new StandardEntityCollection());
    String filename2 = ServletUtilities.saveChartAsPNG(chart2, 500, 300, info2, session);
    PrintWriter pw2 = new PrintWriter(out);
    ChartUtilities.writeImageMap(pw2, filename2, info2, false);
    String graphURL2 = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename2;
    %>
    <img src="<%= graphURL2 %>" width=500 height=300 border=0 usemap="#<%=filename2 %>"> 

    <% 
    /////////////////生成饼状显示图以及图的map
    PiePlot3D plot1 = new PiePlot3D(data1);//3D饼图 
    plot1.setURLGenerator(new StandardPieURLGenerator("barview.jsp"));//设定链接 
    JFreeChart chart1 = new JFreeChart("程序员学历情况调查表",JFreeChart.DEFAULT_TITLE_FONT, plot1, true); 
    chart1.setBackgroundPaint(java.awt.Color.white);//可选,设置图片背景色 
    StandardEntityCollection sec1 = new StandardEntityCollection(); 
    ChartRenderingInfo info1 = new ChartRenderingInfo(sec1); 
    PrintWriter w1 = new PrintWriter(out);//输出MAP信息 
    //500是图片长度,300是图片高度 
    String filename1 = ServletUtilities.saveChartAsPNG(chart1, 500, 300, info1, session); 
    ChartUtilities.writeImageMap(w1, "map1", info1, false); 

    /////////////////////////需要在web.xml中配置
    String graphURL1 = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename1;

    %>

    <img src="<%= graphURL1 %>" width=500 height=300 border=0 usemap="#<%=filename1 %>"> 

    </DIV> 





    (在web.xml中加入
    <servlet-name>DisplayChart</servlet-name> 
    <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>DisplayChart</servlet-name> 
    <url-pattern>/servlet/DisplayChart</url-pattern> 
    </servlet-mapping> ) 

  • 相关阅读:
    在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别
    RESTful 的总结
    Mvc项目部署IIS报错:没有为请求的URL配置默认文档,并且没有在服务器设置目录浏览
    Ajax的请求方式几传参的区别
    响应式布局中的CSS相对量
    理解 ES6 语法中 yield* 关键字的作用
    理解 ES6 语法中 yield 关键字的返回值
    配置IIS Express以便通过IP地址访问调试的网站
    在IntelliJ IDEA 13中配置OpenCV的Java开发环境
    iOS UITableView获取cell的indexPath及cell内部按钮点击事件处理
  • 原文地址:https://www.cnblogs.com/yuxuan/p/2124206.html
Copyright © 2020-2023  润新知