问题描述
在使用JFreeChart生成柱状图的时候发现一个问题,就是当值为0的时候,对应的柱状图标签不显示,下面有Item1、Item2、Item3和Item4,由于Item2的值为0,生成的柱状图只有Item1、Item3和Item4,有没有办法让Item2的位置上面显示标签值0呢?DefaultCategoryDatasetdataset=newDefaultCategoryDataset();dataset.setValue(1200,"Item1","");dataset.setValue(0,"Item2","");dataset.setValue(3,"Item3","");dataset.setValue(1,"Item4","");JFreeChartchart=ChartFactory.createBarChart("Category",null,"Value",dataset);CategoryPlotplot=(CategoryPlot)chart.getPlot();NumberAxislocalNumberAxis=(NumberAxis)plot.getRangeAxis();localNumberAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());localNumberAxis.setUpperMargin(0.15D);CategoryItemRendererlocalCategoryItemRenderer=plot.getRenderer();localCategoryItemRenderer.setBaseItemLabelGenerator(newStandardCategoryItemLabelGenerator());localCategoryItemRenderer.setSeriesItemLabelsVisible(0,Boolean.TRUE);localCategoryItemRenderer.setSeriesItemLabelsVisible(1,Boolean.TRUE);localCategoryItemRenderer.setSeriesItemLabelsVisible(2,Boolean.TRUE);localCategoryItemRenderer.setSeriesItemLabelsVisible(3,Boolean.TRUE);plot.setForegroundAlpha(0.8f);ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,640,400);
解决方案
解决方案二:
你用的jfreechart是什么版本?我用的是1.0.13版本,可以正常生成0那个数据标签。代码如下:DefaultCategoryDatasetdataset=newDefaultCategoryDataset();dataset.setValue(1200,"Item1","");dataset.setValue(0,"Item2","");dataset.setValue(3,"Item3","");dataset.setValue(1,"Item4","");JFreeChartjfreechart=ChartFactory.createBarChart("Category",null,null,dataset,PlotOrientation.VERTICAL,true,true,false);CategoryPlotcategoryplot=(CategoryPlot)jfreechart.getPlot();categoryplot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);BarRendererbarrenderer=(BarRenderer)categoryplot.getRenderer();barrenderer.setBaseItemLabelsVisible(true);barrenderer.setBaseItemLabelGenerator(newStandardCategoryItemLabelGenerator("{2}",newDecimalFormat("#,
解决方案三:
.#")));barrenderer.setGradientPaintTransformer(newStandardGradientPaintTransformer(GradientPaintTransformType.HORIZONTAL));barrenderer.setDrawBarOutline(false);barrenderer.setLegendItemToolTipGenerator(newStandardCategorySeriesLabelGenerator("Tooltip:{0}"));FileOutputStreamfosJpg=newFileOutputStream("D:/temp/BarChart1.jpg");ChartUtilities.writeChartAsJPEG(fosJpg,1,jfreechart,640,480,null);