我在创建的图形上为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)
。每次,y轴仍从0开始。
最佳答案
感谢@doublep在私人聊天中的回答。
我使用的是BarChart,默认情况下显示BarRenderer
,将范围的底数设置为0。
要覆盖它,您只需要从图对象中获取渲染器并将其强制转换为键入BarRenderer
,然后调用setIncludeBaseInRange(false)
,这将防止默认值0包含在范围内。