如何正确使用JFreeChart自动范围?

时间:2015-02-24 12:26:50

标签: java jfreechart bar-chart

我在我正在创建的图表上手动创建y轴的范围,但看到有一些属性表明JFreeChart可以为您生成它们。

它已经为y轴生成了合理的最大值,但无论我尝试做什么,我都无法在生成图形时实际考虑setAutoRangeIncludesZero(boolean)

以下是生成和操作图表的相关代码:

barChart = ChartFactory.createBarChart("Classifiers' accuracy for " + position + "s", 
           "Missing Value Imputation Method Combination", 
           "Average accuracy (%)", dataset, 
           PlotOrientation.VERTICAL, true, false, false);

plot = (CategoryPlot)barChart.getCategoryPlot();
xAxis = (CategoryAxis)plot.getDomainAxis();
xAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);

yAxis = (NumberAxis)plot.getRangeAxis();
yAxis.setAutoRangeIncludesZero(false);

barChartImage = new File(position + "-Classification" + ".png");

我还尝试首先使用ValueAxis将y轴作为setAutoRange(true),然后将y轴投射到NumberAxis并使用setAutoRangeIncludesZero(false)。< / p>

每次,y轴仍然从0开始。

1 个答案:

答案 0 :(得分:1)

感谢@doublep在私聊中的答案。

我正在使用BarChart,默认情况下结果为BarRenderer,将范围的基数设置为0。 要覆盖它,您只需要从绘图对象中获取渲染器并将其强制转换为BarRenderer,然后调用setIncludeBaseInRange(false),这样可以防止默认值0包含在范围内。