今天用jfreechart做圖,發(fā)現(xiàn)生產(chǎn)的柱狀圖無(wú)法顯示數(shù)值,經(jīng)過(guò)一段時(shí)間摸索終于解決,現(xiàn)給一demo如下:
test.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="org.jfree.chart.*"%>
<%@ page import="org.jfree.chart.axis.AxisLocation"%>
<%@ page import="org.jfree.chart.plot.*"%>
<%@ page import="org.jfree.data.*"%>
<%@ page import ="java.text.DecimalFormat"%>
<%@ page import ="java.text.NumberFormat"%>
<%@ page import ="java.awt.Color"%>
<%@ page import="java.awt.Font"%>
<%@ page import="org.jfree.chart.renderer.category.*"%>
<%@ page import="org.jfree.chart.axis.*"%>
<%@ page import="org.jfree.chart.title.TextTitle"%>
<%@ page import="org.jfree.chart.labels.*"%>
<%@page import="org.jfree.data.category.*"%>
<%@page import="org.jfree.chart.plot.PlotOrientation"%>
<%@page import="org.jfree.chart.servlet.ServletUtilities"%>
<%
CategoryDataset dcd= getDataset();
JFreeChart chart= ChartFactory.createStackedBarChart3D("各部門(mén)參加培訓(xùn)情況", "部門(mén)", "人數(shù)", dcd, PlotOrientation.VERTICAL, true, false, false);
// 圖例字體清晰
//chart.setTextAntiAlias(false);
//chart.setBackgroundPaint(Color.WHITE);
// 2 .2 主標(biāo)題對(duì)象 主標(biāo)題對(duì)象是 TextTitle 類(lèi)型
//chart .setTitle(new TextTitle("ok", new Font("隸書(shū)", Font.BOLD, 25)));
// 2 .2.1:設(shè)置中文 // x,y軸坐標(biāo)字體
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
// 2 .3 Plot 對(duì)象 Plot 對(duì)象是圖形的繪制結(jié)構(gòu)對(duì)象
CategoryPlot plot = (CategoryPlot)chart.getPlot();
ValueAxis rangeAxis = plot.getRangeAxis();
//設(shè)置最高的一個(gè) Item 與圖片頂端的距離
rangeAxis.setUpperMargin(0.15);
//設(shè)置最低的一個(gè) Item 與圖片底端的距離
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
StackedBarRenderer3D renderer=new StackedBarRenderer3D();
//renderer.setBaseOutlinePaint(Color.BLACK);
//設(shè)置 Wall 的顏色
//renderer.setWallPaint(Color.gray);
//設(shè)置每種柱的顏色
renderer.setSeriesPaint(0, new Color(153, 153, 255));
renderer.setSeriesPaint(1, new Color(204, 255, 255));
renderer.setSeriesPaint(2, Color.GREEN);
//顯示每個(gè)柱的數(shù)值,并修改該數(shù)值的字體屬性
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑體",Font.PLAIN,9));
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
String filename=ServletUtilities.saveChartAsPNG(chart,500,300,null,session);
String url=request.getContextPath()+"/servletDisplayChart?filename="+filename;
%>
<p align="center">
<img src="<%=url%>" width="500" height="300" border="0" usemap="#map0">
</p>
<%!
private static CategoryDataset getDataset()
{
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(10.399999999999999D, "培訓(xùn)人數(shù)", "中心機(jī)關(guān)");
defaultcategorydataset.addValue(10.800000000000001D, "未培訓(xùn)人數(shù)", "中心機(jī)關(guān)");
defaultcategorydataset.addValue(43.200000000000003D, "培訓(xùn)人數(shù)", "物探部");
defaultcategorydataset.addValue(15.6D, "未培訓(xùn)人數(shù)", "物探部");
defaultcategorydataset.addValue(23D, "培訓(xùn)人數(shù)", "遙感部");
defaultcategorydataset.addValue(11.300000000000001D, "未培訓(xùn)人數(shù)", "遙感部");
defaultcategorydataset.addValue(13D, "培訓(xùn)人數(shù)", "物業(yè)部");
defaultcategorydataset.addValue(11.800000000000001D, "未培訓(xùn)人數(shù)", "物業(yè)部");
defaultcategorydataset.addValue(15, "培訓(xùn)人數(shù)", "企業(yè)部");
defaultcategorydataset.addValue(12D, "未培訓(xùn)人數(shù)", "企業(yè)部");
return defaultcategorydataset;
}
%>