《转载》 【摘 要】本文介绍我们介绍使用 JFreeChart 生成柱状图,首先从一个最简单的例子开始,我只介绍了少量的方法,更多的请参考 JFreeChart 的 Java Doc API 文档和 Sample Code 我们介绍使用 JFreeChart 生成柱状图,首先从一个最简单的例子开始。 一 最简单的例子 为了降低门槛,让大家心理有个底,先介绍一个简单的不能再简单的例子,图片中的各类属性都采用默认值。 我在前人的基础上修改了一下;使用了jfreechart-1.0.9.jar进行编写的;
sample1页面: <%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChart, org.jfree.chart.plot.PlotOrientation, org.jfree.chart.servlet.ServletUtilities, org.jfree.data.category.DefaultCategoryDataset, java.io.PrintWriter,org.jfree.chart.ChartRenderingInfo,
org.jfree.chart.entity.StandardEntityCollection,
org.jfree.chart.urls.StandardPieURLGenerator,
org.jfree.chart.labels.StandardPieToolTipGenerator,
org.jfree.chart.ChartUtilities,java.io.File"%>
<%DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(300, "广州", "苹果");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(500, "广州", "葡萄");
dataset.addValue(340, "广州", "芒果");
dataset.addValue(280, "广州", "荔枝");
JFreeChart chart = ChartFactory.createBarChart3D("水果销量统计图", "水果", "销量", dataset, PlotOrientation.VERTICAL, false, false, false);
StandardEntityCollection entityCollection = new StandardEntityCollection(); //生成RenderingInfo实例
ChartRenderingInfo info=new ChartRenderingInfo(entityCollection); //将页面输出流out包装成一个PrintWriter的实例 PrintWriter pw=new PrintWriter(out); String filenam=ServletUtilities.saveChartAsPNG(chart,800,800,info,null);
//将图片的热点信息在 html页面中输出,pw代表页面的输出流,map0是定义热点的MAP标签ID //info参数的热点信息
ChartUtilities.writeImageMap(pw,"map0",info,false);%>
<img src="DisplayChart?filename=<%=filenam %>" width=800 height=800 border=0 usemap="#map0">
运行效果看:http://blog.tom.com/xfy168/article/255.html
sample2.jsp
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.awt.Color, java.awt.Font, org.jfree.chart.ChartFactory, org.jfree.chart.JFreeChart, org.jfree.chart.plot.PlotOrientation, org.jfree.chart.servlet.ServletUtilities, org.jfree.data.category.*, 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.chart.axis.AxisLocation, org.jfree.data.general.DatasetUtilities"%>
<% double[][] data = new double[][] {{672, 766, 223, 540, 126},{325, 521, 210, 340, 106},{332, 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,false,false);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setVerticalCategoryLabels(false);
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis(); //设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15); //设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK); //设置 Wall 的颜色
renderer.setWallPaint(Color.gray); //设置每种水果代表的柱的颜色 renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN); //设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1); //显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer); //设置柱的透明度
plot.setForegroundAlpha(0.6f); //设置地区、销量的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
String filename = ServletUtilities.saveChartAsPNG(chart, 600, 400, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename; %>
<img src="<%= graphURL %>" width=600 height=400 border=0 usemap="#<%= filename %>">
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 配置JFreeChart项目的 DisplayChart-->
<servlet>
<servlet-name>DisplayChart</servlet-name>
<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<!-- 配置DisplayChart servlet映射的URL-->
<servlet-mapping>
<servlet-name>DisplayChart</servlet-name>
<url-pattern>/DisplayChart</url-pattern>
</servlet-mapping>
</web-app>