我正在使用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)
我试过不同的解决方案
他们都没有工作.
如果您需要更多信息,请告诉我.
如果您查看源代码,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)