关于jfreechart柱状图横向显示的问题(不好意思就这么多分了)

shenxueshi 2007-11-01 05:38:02
各位:

我有如下代码,生成横向的柱状图:


<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="org.jfree.chart.*" %>
<%@ page import="org.jfree.data.*" %>
<%@ page import="org.jfree.data.category.*" %>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.plot.*" %>
<%@ page import="org.jfree.chart.axis.*" %>
<%@ page import="org.jfree.chart.renderer.category.*" %>
<%@ page import="org.jfree.chart.labels.*" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.io.*"%>
<html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=gbk">
<title>WebReportTest</title>
</head>
<body>
<%!
DefaultCategoryDataset getDataset(){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100,"北京","苹果");
dataset.addValue(200,"上海","苹果");
dataset.addValue(150,"广州","苹果");
dataset.addValue(200,"北京","梨子");
dataset.addValue(180,"上海","梨子");
dataset.addValue(190,"广州","梨子");
dataset.addValue(300,"北京","葡萄");
dataset.addValue(320,"上海","葡萄");
dataset.addValue(200,"广州","葡萄");
dataset.addValue(300,"北京","香蕉");
dataset.addValue(350,"上海","香蕉");
dataset.addValue(400,"广州","香蕉");
dataset.addValue(400,"北京","荔枝");
dataset.addValue(360,"上海","荔枝");
dataset.addValue(400,"广州","荔枝");
return dataset;
}

DefaultCategoryDataset getDataset2(){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100,"北京","苹果苹果苹果");
dataset.addValue(200,"上海","苹果苹果苹果");
dataset.addValue(150,"广州","苹果苹果苹果");
dataset.addValue(200,"北京","梨子梨子梨子");
dataset.addValue(180,"上海","梨子梨子梨子");
dataset.addValue(190,"广州","梨子梨子梨子");
dataset.addValue(300,"北京","葡萄葡萄葡萄");
dataset.addValue(320,"上海","葡萄葡萄葡萄");
dataset.addValue(200,"广州","葡萄葡萄葡萄");
dataset.addValue(300,"北京","香蕉香蕉香蕉");
dataset.addValue(350,"上海","香蕉香蕉香蕉");
dataset.addValue(400,"广州","香蕉香蕉香蕉");
dataset.addValue(400,"北京","荔枝荔枝荔枝");
dataset.addValue(360,"上海","荔枝荔枝荔枝");
dataset.addValue(400,"广州","荔枝荔枝荔枝");
return dataset;
}
%>
<%
DefaultCategoryDataset dataset = getDataset();
//DefaultCategoryDataset dataset = getDataset2();

JFreeChart jfreechart = ChartFactory.createBarChart("水果产量图","水果","产量",dataset,PlotOrientation.HORIZONTAL,true,false,false);
jfreechart.setBackgroundPaint(Color.white); //设定背景色为白色
jfreechart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
CategoryPlot categoryplot = jfreechart.getCategoryPlot(); //获得 plot:CategoryPlot
categoryplot.setBackgroundPaint(Color.lightGray); //设定图表数据显示部分背景色 categoryplot.setRangeGridlinePaint(Color.black); //纵坐标网格线白色 BarRenderer barrenderer = (BarRenderer)categoryplot.getRenderer(); //获得renderer barrenderer.setDrawBarOutline(false); // Bar的外轮廓线不画

//barrenderer.setItemURLGenerator(new org.jfree.chart.urls.StandardCategoryURLGenerator("aa.jsp"));
barrenderer.setToolTipGenerator(new StandardCategoryToolTipGenerator());

StandardEntityCollection sec = new StandardEntityCollection();
ChartRenderingInfo info = new ChartRenderingInfo(sec);

GradientPaint gradientpaint = new GradientPaint(0.0F,0.0F,Color.blue,0.0F,0.0F,new Color(0,0,64)); //设定特定颜色
GradientPaint gradientpaint1 = new GradientPaint(0.0F,0.0F,Color.yellow,0.0F,0.0F,new Color(0,64,0));
GradientPaint gradientpaint2 = new GradientPaint(0.0F,0.0F,Color.red,0.0F,0.0F,new Color(64,0,0));
barrenderer.setSeriesPaint(0, gradientpaint); //给series1 Bar设定上面定义的颜色
barrenderer.setSeriesPaint(1, gradientpaint1); //给series2 Bar 设定上面定义的颜色
barrenderer.setSeriesPaint(2, gradientpaint2); //给series3 Bar 设定上面定义的颜色
//CategoryAxis categoryaxis = categoryplot.getDomainAxis(); //横轴上的 Lable 45度倾斜
//categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

PrintWriter w = new PrintWriter(out);

String filename = ServletUtilities.saveChartAsPNG(jfreechart,300,500,info,session);
ChartUtilities.writeImageMap(w,filename,info,false);

String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
%>
<table border="1">
<tr>
<td>
<img src="<%=graphURL%>" width="300" height="500" border="0" usemap="#<%=filename%>">
</td>
</tr>
</table>
</body>
</html>


在定义部分定义了两个函数,均返回DefaultCategoryDataset类型,惟一的区别在于方法getDataset2()里Category的名字长一些, 调用getDataset2()生成的图片左侧有比较大的空白,但是Category的名字又显示不全。

不知道有什么方法可以解决这个问题吗?
...全文
440 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmy_yc 2012-10-11
  • 打赏
  • 举报
回复
我也遇到类似问题 ,楼主解决了吗,分享一下答案!
shenxueshi 2007-11-07
  • 打赏
  • 举报
回复
怎么也没有人回啊,自己顶一下……

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧