【发布时间】:2015-02-24 12:26:50
【问题描述】:
我在创建的图表上手动为 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");
我也尝试过首先将 y 轴设为 ValueAxis,使用 setAutoRange(true),然后将 y 轴转换为 NumberAxis 并使用 setAutoRangeIncludesZero(false)。
每次,y 轴仍然从 0 开始。
【问题讨论】:
-
你有什么值,轴的范围是多少?
-
我的值在 48 到 74 之间,目前 y 轴是 0-78
-
检查以下值(例如打印它们):
plot.getDataRange (yAxis)、yAxis.getRangeType ()、yAxis.getAutoRangeIncludesZero ()、yAxis.getFixedAutoRange ()、yAxis.getAutoRangeMinimumSize ()、yAxis.getAutoRangeStickyZero ()。 -
plot.getRange(yAxis)= 0.0 和 70.45(不知道为什么从 0 开始,数据集中没有一个数据是 0)yAxis.getRangeType()=RangeType.FULLyAxis.getAutoRangeIncludesZero()= false @987654337 @ = 0.0yAxis.getAutoRangeMinimumSize()= 1.0E-8yAxis.getAutoRangeStickyZero()= 真 -
好吧,如果绘图范围返回零作为下限,难怪轴在其自动范围中包含零。您是否绝对确定数据集中实际上没有零值(可能以某种方式“隐藏”)?
标签: java jfreechart bar-chart