我用的是CategoryDataset类型的,且每根柱子的标签为String类型的,试过很多方法,比如把横轴的标签竖着或者斜着或者换行显示,但是因为生成的图大小必须固定所以当数据过多时还是不能正常显示,想到的解决办法是能不能根据数据的多少自动设置横轴的标签,比如,如果数据很少,就每根柱子下都有标签;如果数据过多不能完全显示标签时,就每隔若干根柱子才显示一次标签,比如下图的显示效果:只要解决马上那个结帖,小弟在这谢谢各位大神了!!!jfreechart
解决方案 »
- 服务器返回ModelAndView,客户端得不到返回的json数据
- jsp如何使用ImgUpload.CAB插件,在向编辑器中粘贴本地图片,如何上传到服务器
- 从mysql读出来的中文数据为乱码,有什么办法解决?
- 各位哥哥姐姐们帮帮小妹我!
- 求用JSP实现文件上传的源代码
- 如何让多条sql语句变成一个原子
- setProperty方法是干什么用的???
- 怎么会出现这样的错误?
- 各位大虾!!如果我用jdbc-odbc桥的数据库驱动,那岂不是当在本地机上做好网站之后,还需要在服务器上重新定义数据苦于数据源!但这是不
- 求常用的实现前段动态效果的文档..
- 两个关于J2EE框架的问题
- struts 关于token
* 柱状图
* @param dataset
* @param plot
* @param width
* @param height
* @throws Exception
*/
public void pillar(DefaultCategoryDataset dataset, PlotOrientation plot, Integer width, Integer height) throws Exception {
JFreeChart chart = ChartFactory.createBarChart3D("", "", "", dataset, plot, true, true, true);
CategoryPlot plot1 = chart.getCategoryPlot();//获得图表区域对象
BarRenderer3D bar = (BarRenderer3D) plot1.getRenderer();
bar.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示每个柱的数值
bar.setBaseItemLabelsVisible(true);
bar.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
bar.setItemLabelAnchorOffset(-12D);// 设置柱形图上的文字偏离值
if (height == 35) {
height = 135;
bar.setMaximumBarWidth(0.25);
bar.setItemMargin(0.000000005);
}
plot1.setRenderer(bar);
try {
NumberAxis axis = (NumberAxis) plot1.getRangeAxis();// y轴精度
axis.setAutoRangeIncludesZero(true);// 设置刻度必须从0开始
axis.setNumberFormatOverride(new DecimalFormat("#0"));
} catch (Exception e) {}
getResponse().setContentType("text/plain;charset=UTF-8");
ChartUtilities.writeChartAsPNG(getResponse().getOutputStream(), chart, width, height);
}
/**
* 折线图
* @param dataset
* @param plot
* @param width
* @param height
* @throws Exception
*/
public void line(DefaultCategoryDataset dataset, PlotOrientation plot, Integer width, Integer height) throws Exception {
JFreeChart chart = ChartFactory.createLineChart("", "", "", dataset, plot, true, true, true);
CategoryPlot plot1 = chart.getCategoryPlot();//获得图表区域对象
LineAndShapeRenderer renderer = new LineAndShapeRenderer();
//renderer.setSeriesPaint(0, Color.BLUE);// 改变折线的颜色
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());//显示每个柱的数值
renderer.setBaseItemLabelsVisible(true);
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER));
renderer.setItemLabelAnchorOffset(2D);// 设置柱形图上的文字偏离值
if (height == 35) {
height = 135;
}
plot1.setRenderer(renderer);// 给折线加点
try {
NumberAxis axis = (NumberAxis) plot1.getRangeAxis();// y轴精度
axis.setAutoRangeIncludesZero(true);// 设置刻度必须从0开始
axis.setNumberFormatOverride(new DecimalFormat("#0"));
} catch (Exception e) {}
getResponse().setContentType("text/plain;charset=UTF-8");
ChartUtilities.writeChartAsPNG(getResponse().getOutputStream(), chart, width, height);
}
/**
* 饼图
* @param dataset
* @param width
* @param height
* @throws Exception
*/
public void round(DefaultPieDataset dataset, Integer width, Integer height) throws Exception {
JFreeChart chart = ChartFactory.createPieChart("", dataset, true, true, true);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelLinkMargin(0.1d);
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{2}", new DecimalFormat("0.00"), new DecimalFormat("0.00%")));
getResponse().setContentType("text/plain;charset=UTF-8");
ChartUtilities.writeChartAsPNG(getResponse().getOutputStream(), chart, width, height);
}