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> ) 

你可能感兴趣的:(jfreechart)