上面的这个柱状图比较简单,稍显单调,在有些情况下,我们需要用不同颜色来表示不同的种类,或者在种类上标上具体数值,亦或需要加上3D水晶效果。下面让我们来做更深一步的探讨。接下来让我们看一个用不同颜色来表示不通种类的例子。在WebRoot的bar目录下新建sample2.jsp页面,将其代码修改如下:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.plot.CategoryPlot,
org.jfree.chart.axis.*,
org.jfree.chart.servlet.ServletUtilities,
java.awt.*,
org.jfree.chart.title.TextTitle,
org.jfree.data.category.CategoryDataset,
org.jfree.data.general.DatasetUtilities"%>
<%
double[][] data = new double[][] {{1310}, {720}, {1130}, {440},{563},{888}};
String[] rowKeys = { "pig", "beef", "chicken", "fish", "apple", "orange"};
String[] columnKeys = {""};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("广州肉类销量统计图",
"type",
"amount",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false);
CategoryPlot plot=chart.getCategoryPlot();
CategoryAxis domainAxis=plot.getDomainAxis();
domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14));
domainAxis.setTickLabelFont(new Font("宋体",Font.BOLD,12));
ValueAxis rangeAxis=plot.getRangeAxis();
rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体",Font.BOLD,15));
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
该页面的运行效果如下图所示:

对比该例与前例,我可看出createBarChart3D的倒数第三个参数修改成了true,该参数可用来显示下方的方框 。
createBarChart3D(
param1 , //图表标题
param2 , //数据
true , //是否显示图例
true , //是否显示工具提示
true //是否生成url
)
本文介绍如何使用Java和JFreeChart库创建带有3D效果的柱状图,并展示了一个具体的示例,包括如何设置标题、字体样式以及如何保存图表为PNG格式。
1057

被折叠的 条评论
为什么被折叠?



