这个图怎么画出来,上面的都好画,就是下面的X轴要用表显示怎么弄,弄过的大侠给指点一下
解决方案 »
- 如何实现搜索功能
- quartz定时器问题
- 这是什么问题呀!
- ERROR [STDERR] 2011-7-26 10:35:41 com.sun.facelets.FaceletViewHandler handleRend
- jsp调用bean出错
- 麻烦大家帮看看为什么总是提示: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'biao' 无效。
- 关于分页,答者有分.小弟初学!
- 频繁操作后tomcat 页面没反应
- 仿淘宝网站JSP问题
- 用一个超连接连接到一个JSP页面,这个JSP页面如何获得这个超连接的字符串?
- JSP问题十万火急!!
- JAVA实现WEB服务器实时把数据写到页面??
public ActionForward show(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
int width = 500; // 图像宽度
int height = 375; // 图像高度
String chartTitle = "编程类图书年销量柱形图分析"; // 图表标题
String subtitle = "------统计时间:2008年"; // 副标题
String xTitle = "销售时间:2008年"; // X轴标题
String yTitle = "销售量 单位:万册"; // Y轴标题 String[] cutline = new String[] { "ASP", "JSP", "PHP" }; // 图例名称
String category[] = new String[] {"第1季度","第2季度","第3季度","第4季度"}; // 统计种类
Double[][] data = new Double[cutline.length][category.length];
for (int m = 0; m < cutline.length; m++) { // 随机获取绘图数据
for (int n = 0; n < category.length; n++) {
data[m][n] = Double.valueOf((1 + Math.random() * 100));
}
}
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int m = 0; m < cutline.length; m++) {
for (int n = 0; n < category.length; n++) {
dataset.addValue(data[m][n], cutline[m], category[n]);
}
}
JFreeChart chart = ChartFactory.createBarChart3D(chartTitle, // 图表标题
xTitle, // X轴标题
yTitle, // Y轴标题
dataset, // 绘图数据集
PlotOrientation.VERTICAL, // 柱形图绘制方向
true, // 显示图例
true, // 显示图例名称
false // 生成链接
);
//为图片添加副标题,代码如下:
chart.addSubtitle(new TextTitle(subtitle));
//将图片的背景色设置为渐变效果,代码如下:
GradientPaint chartGP = new GradientPaint(0, 0,
new Color(219, 227, 251), 0, height, Color.WHITE, false); // 创建渐变色对象
chart.setBackgroundPaint(chartGP); // 设置图片背景色
//通过JFreeChart实例的getCategoryPlot()方法获得CategoryPlot类的实例,目的是设置绘图区的绘图属性,代码如下:
CategoryPlot plot = chart.getCategoryPlot();
//设置绘图区的相关绘图属性,代码如下:
plot.setBackgroundPaint(new Color(241, 219, 127)); // 设置绘图区背景色
plot.setRangeGridlinePaint(Color.RED); // 设置水平方向背景线颜色
plot.setRangeGridlinesVisible(true); // 设置是否显示水平方向背景线,默认值为True
plot.setDomainGridlinePaint(Color.RED); // 设置垂直方向背景线颜色
plot.setDomainGridlinesVisible(true); // 设置是否显示垂直方向背景线,默认值为False
BarRenderer renderer = (BarRenderer) plot.getRenderer();
//在这里不绘制柱形的轮廓线,JFreeChart默认为绘制,代码如下:
renderer.setDrawBarOutline(false);
//下面设置柱形的填充颜色,同样采用渐变效果,代码如下:
Color color[] = new Color[cutline.length];
color[0] = new Color(99, 99, 0);
color[1] = new Color(255, 169, 66);
color[2] = new Color(33, 255, 66);
for (int i = 0; i < color.length; i++) {
GradientPaint gp = new GradientPaint(0, 0, color[i].brighter(), 0,
height, color[i].darker());
renderer.setSeriesPaint(i, gp);
}
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
HttpSession session = request.getSession();
String fileName = "";
try {
fileName = ServletUtilities.saveChartAsPNG(chart, width, height, info, session);
} catch (IOException e) {
}
request.setAttribute("fileName", fileName);
return mapping.findForward("showChart");
}
<img src="DisplayChartAction?method=show&filename=${fileName}" />
这样就可以了。