如下图:
[img]http://bbs.5d.cn/uploadFiles/2009-08/QE07C9ZGK8M5.jpg[/img]
1.我想把图例显示在图的左上角部分.
2.柱形图其实是由三部分组,支店总的改的,正常营收,额外营收(普通情况只有两部分,总的及实际的),这种柱形图怎么做,谢谢!!
3.另外要把图显示在jsp中,只有先生成图片,然后再显示吗?有没有更好的方法,能在jsp中传参数然后自动刷新显示.
谢谢!!!
[b]问题补充:[/b]
谢谢walsh
另再请教一下,必须是struts2和jfreechart整合之后才能用这种简单的实现方法,因为项目不是很大,所以不想使用struts框架之类的,想用直接jsp开发,嘿~
请教jfreechart的两个问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- walsh_bupt 2009-08-20 19:24关注
第一个问题:[color=red]图例显示在左上角是做不到的[/color]。可以显示在上,下,左,右。
因为在API中只能设置这几个位置,相信楼主这个问题应该来说不是最重要的吧。
第二个问题:
[code="java"]public JFreeChart createStackedBarChart() {
double[][] data = new double[][] { { 10, 8, 12, 10, 40 },
{ 18, 12, 20, 10, 60 } };
String[] rowKeys = { "营收", "额外" };
String[] columnKeys = { "分店A", "分店B", "分店C", "分店D", "总店" };
CategoryDataset dataset = getBarData(data, rowKeys, columnKeys);// 2:JFreeChart对象 JFreeChart chart = ChartFactory.createStackedBarChart("营业图", // 图表标题 "", // 目录轴的显示标签 "", // 数值轴的显示标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 图表方向:水平、垂直 true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); chart.setTextAntiAlias(false); chart.setBackgroundPaint(Color.WHITE); chart.setTitle(new TextTitle("营业图", new Font("隶书", Font.BOLD, 25))); Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12); // 2 .3 Plot 对象 Plot 对象是图形的绘制结构对象 CategoryPlot plot = chart.getCategoryPlot(); plot.setRangeGridlinesVisible(true); plot.setRangeGridlinePaint(Color.gray); NumberAxis vn = (NumberAxis) plot.getRangeAxis(); vn.setUpperBound(200); DecimalFormat df = new DecimalFormat("000"); vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式 // DomainAxis (区域轴,相当于 x 轴), RangeAxis (范围轴,相当于 y 轴) CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(labelFont);// 轴标题 domainAxis.setTickLabelFont(labelFont);// 轴数值 domainAxis.setMaximumCategoryLabelWidthRatio(0.6f); plot.setDomainAxis(domainAxis); // y轴设置 ValueAxis rangeAxis = plot.getRangeAxis(); rangeAxis.setLabelFont(labelFont); rangeAxis.setTickLabelFont(labelFont); // 设置最高的一个 Item 与图片顶端的距离 rangeAxis.setUpperMargin(0.15); // 设置最低的一个 Item 与图片底端的距离 rangeAxis.setLowerMargin(0.15); plot.setRangeAxis(rangeAxis); // Renderer 对象是图形的绘制单元 StackedBarRenderer renderer = new StackedBarRenderer(); // 设置柱子宽度 renderer.setMaximumBarWidth(0.05); // 设置柱子高度 renderer.setMinimumBarLength(0.1); // 设置柱的边框颜色 renderer.setBaseOutlinePaint(Color.BLACK); // 设置柱的边框可见 renderer.setDrawBarOutline(true); renderer.setSeriesPaint(0, new Color(204, 255, 204)); renderer.setSeriesPaint(1, new Color(255, 204, 153)); renderer.setItemMargin(0.4); renderer .setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); renderer.setBaseItemLabelsVisible(true); plot.setRenderer(renderer); return chart; }[/code]
运行结果如下图所示:
[url]http://walsh.iteye.com/upload/attachment/138372/445c54ac-5c1c-3be3-b3d7-aacdac1aee3f.png[/url]第三个问题:
当然有更好的办法了,上图实现的就是在JSP中显示的,并且可以自动刷新,从而显示最新的数据信息。用struts2和jfreechart可以很容易就实现了。不会生成任何中间图片文件。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报