在JSP中生成平面柱状图

来源:互联网 发布:数据可视化之美 编辑:程序博客网 时间:2024/05/21 08:41

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也是种能力啊。

谢谢上述两位作者。

都四月份了还这么冷。。。手写不了字了。。


原创粉丝点击