jfreechart 怎么才能使柱状图中每根柱子上显示数据?
public class BarChartDemo {
public static void main(String[] args) throws IOException,ClassNotFoundException, SQLException{
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
null, // 目录轴的显示标签
null, // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
true, // 是否生成工具
true // 是否生成URL链接
);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
//domainAxis.setVerticalCategoryLabels(false);
plot.setDomainAxis(domainAxis);
ValueAxis rangeAxis = plot.getRangeAxis();
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置 Wall 的颜色
renderer.setWallPaint(Color.gray);
// 设置每种水果代表的柱的颜色
renderer.setSeriesPaint(0, new Color(0, 0, 255));
renderer.setSeriesPaint(1, new Color(0, 100, 255));
renderer.setSeriesPaint(2, Color.GREEN);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.1);
// 显示每个柱的数值,并修改该数值的字体属性
// renderer.setLabelGenerator(new StandardCategoryLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的组合数据集对象
* @return
*/
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(85, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
}
在中国了BS网上有一篇文章http://www.chinabs.net/jsp/default.asp
有一条语句:renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
但是我按他的路径找不到StandardCategoryItemLabelGenerator这个类??
我用的是1.0.0的
望各位能帮帮我
问题点数:20、回复次数:12Top
1 楼redex(cc)回复于 2005-01-11 16:05:54 得分 0
可以看看附带的文档.Top
2 楼fun1981(不死鸟)回复于 2005-01-11 17:29:06 得分 0
在JBOSS中怎么使用dmeo啊?Top
3 楼crazyuser(一路阳光)回复于 2005-01-11 17:38:15 得分 0
jfreechart 哪里下载??Top
4 楼fun1981(不死鸟)回复于 2005-01-11 20:28:32 得分 0
我把renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
改成
renderer.setLabelGenerator(new StandardCategoryLabelGenerator());
后,在其中一根柱子上显示了数字
望哪位能指点一下?Top
5 楼jackal81(热带北极熊)回复于 2005-01-11 21:51:41 得分 0
JFreeChart里面有很多demo例子很全的,你可以看一下,对你有帮助Top
6 楼fun1981(不死鸟)回复于 2005-01-12 20:36:04 得分 0
可我不知道怎么用demo
把它放到JBOSS_HMOE/server/default/lib下吗?Top
7 楼fun1981(不死鸟)回复于 2005-01-13 20:39:59 得分 0
demo我会用了
它里面有的例子,鼠标放上去后能显示这一点或这一区域的数值,不知道想要在网页实现这样的功能
该怎么做?
Top
8 楼renren317(蜘蛛)回复于 2005-02-04 16:49:40 得分 10
定义图像的map数据,就可以让鼠标放上去后能显示这一点或这一区域的数值
MAP对应对象:ChartRenderingInfo
我写的程序是这么写的
PrintWriter pw;
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
//Write the image map to the PrintWriter
ChartUtilities.writeImageMap(pw, filename, info);
pw.flush();Top
9 楼cuixiping(无心●愚公)回复于 2005-03-14 20:02:49 得分 0
收藏Top
10 楼dawangzi16(大望子)回复于 2005-03-30 09:05:29 得分 0
自己看例子研究吧。。有现成的例子的。。我看过我同事以前做过和你要求一样的图。。。。Top
11 楼dawangzi16(大望子)回复于 2005-03-30 09:06:43 得分 10
在生成 函数后(ChartFactory.createBarChart3D)加入下面的代码即可。
CategoryPlot plot = chart.getCategoryPlot();
BarRenderer3D renderer = new BarRenderer3D();
//显示每个柱的数值,并修改该数值的字体属性
renderer.setBaseLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
Top
12 楼tennico(笨蛋)回复于 2005-04-20 17:05:54 得分 0
楼上正解,若你找不到包
org.jfree.chart.plot.CategoryPlot plot = chart.getCategoryPlot();
org.jfree.chart.renderer.category.BarRenderer3D render = new org.jfree.chart.renderer.category.BarRenderer3D();
render.setLabelGenerator(new org.jfree.chart.labels.StandardCategoryLabelGenerator());
render.setItemLabelFont(new Font("黑体",Font.PLAIN,20));
render.setItemLabelsVisible(true);
plot.setRenderer(render);Top




