http://blog.csdn.net/jinchun1234/article/details/4319167
该文章实现了柱状图的输出(谢谢作者),但是形状不喜欢;
http://www.cnblogs.com/xingyun/archive/2012/02/05/2339237.html
该文章实现了柱状图的Panel但是并没有写具体的JSP如何输出柱状图,两者结合起来我改了其中几行代码,能够在JSP页面输出自己喜欢的形状的柱状图了。
如下:
具体代码如下:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page
import="java.awt.Color,java.io.OutputStream,java.io.FileOutputStream,org.jfree.chart.title.TextTitle,org.jfree.data.category.DefaultCategoryDataset,org.jfree.chart.ChartFactory,org.jfree.chart.JFreeChart,org.jfree.chart.plot.PlotOrientation,org.jfree.chart.servlet.ServletUtilities,org.jfree.data.category.CategoryDataset,org.jfree.data.general.*,org.jfree.chart.plot.CategoryPlot,org.jfree.chart.axis.CategoryAxis,org.jfree.chart.axis.ValueAxis,org.jfree.chart.renderer.category.BarRenderer3D,org.jfree.chart.urls.StandardCategoryURLGenerator,org.jfree.chart.*,org.jfree.chart.entity.*,org.jfree.chart.labels.*,org.jfree.chart.axis.CategoryLabelPositions,java.awt.Font,java.awt.GradientPaint,org.jfree.ui.TextAnchor,org.jfree.chart.axis.NumberAxis,org.jfree.chart.axis.NumberTickUnit"%>
<html>
<body>
<%
java.io.PrintWriter pw = new java.io.PrintWriter(out);
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
String[] str = new String[4];
str[0]="管理人员";
str[1]="市场人员";
str[2]="开发人员";
str[3]="其他人员";
int[] intarray = new int[4];
for (int i = 0; i < 4; i++) {
intarray[i] = i*4+3;
}
for (int i = 0; i < 4; i++) {
dataset.setValue(intarray[i],str[i],str[i]);
}
JFreeChart chart = ChartFactory.createBarChart("", "人员分布",
"人员数量", dataset, PlotOrientation.VERTICAL, true, true,
false); //创建一个JFreeChart
chart.setTitle(new TextTitle("某公司组织结构图", new Font("宋体", Font.BOLD
+ Font.ITALIC, 20)));//可以重新设置标题,替换“hi”标题
CategoryPlot plot = (CategoryPlot) chart.getPlot();//获得图标中间部分,即plot
CategoryAxis categoryAxis = plot.getDomainAxis();//获得横坐标
categoryAxis.setLabelFont(new Font("微软雅黑", Font.BOLD, 12));//设置横坐标字体
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
String filename = ServletUtilities.saveChartAsPNG(chart, 400, 300,
info, session);
//调用DisplayChart(配置在webxml中),生成图形
String graphURL = request.getContextPath()
+ "/servlet/DisplayChart?filename=" + filename;
//将MAP信息,写入图形
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
%>
<table width="100%">
<tr>
<td align="center">
<!-- 生成图形 -->
<img src="<%=graphURL%>" width=400 height=300 border=0
usemap="#<%= filename %>" alt="">
</td>
</tr>
</table>
</body>
</html>
其中servlet配置文件web.xml:
<servlet>
<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>
(其实只是一个3D一个平面而已,但是第一个需要二维数组(3D的都需要二维数组数据吗?))
在网上找来找去,真不如自己去看API。学会利用API也是种能力啊。
谢谢上述两位作者。
都四月份了还这么冷。。。手写不了字了。。