在值轴条形图JfreeChart上使用百分比时,值乘以100乘以

Ani*_*rni 0 java jfreechart

我正在使用JfreeChart 1.0.15库.
我想显示大学和分校的百分比,所以我用setNumberFormatOverride()方法

final NumberAxis valueAxis = new NumberAxis("Percentage Score");
valueAxis.setNumberFormatOverride(NumberFormat.getPercentInstance());
Run Code Online (Sandbox Code Playgroud)

它显示了我的%标志,Y-axis但所有的值都乘以100.

实际输出

查看Y-axis值.条形图上的标签值是正确的.

如果我将每个值除以100,那么Y-axis值是正确的(例如15%,19%,25%,27%),但标签值显示错误(例如0.15,0.19,0.25,0.27).

下面的代码也不会给出所需的输出

DecimalFormat pctFormat = new DecimalFormat("#.0%");
valueAxis.setNumberFormatOverride(pctFormat);
Run Code Online (Sandbox Code Playgroud)

我试过不同的解决方案

他们都没有工作.
如果您需要更多信息,请告诉我.

Mik*_*e B 5

如果您查看源代码,NumberFormat您将看到NumberFormat#getPercentInstance()实际返回DecimalFormat实例.虽然从源代码中不能立即看出实例使用它的格式字符串,但可以安全地假设它包含一个%.

按照DecimalFormat javadoc的标题的部分特殊模式字符,一个%在格式字符串表示Multiply by 100 and show as percentage.幸运的是NumberFormat提供了一种setMultiplier()方法,所以你可以这样做来解决你的问题:

DecimalFormat pctFormat = new DecimalFormat("##.0%");
pctFormat.setMultiplier(1);
valueAxis.setNumberFormatOverride(pctFormat);
Run Code Online (Sandbox Code Playgroud)

我相信你也可以引用%,像这样:

DecimalFormat pctFormat = new DecimalFormat("##.0'%'");
valueAxis.setNumberFormatOverride(pctFormat);
Run Code Online (Sandbox Code Playgroud)