我正在使用JfreeChart 1.0.15库。
我想显示学院和分支机构的百分比得分,所以我使用了setNumberFormatOverride()方法

final NumberAxis valueAxis = new NumberAxis("Percentage Score");
valueAxis.setNumberFormatOverride(NumberFormat.getPercentInstance());


它显示了%上的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);


我尝试了不同的解决方案


http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=30345
http://www.infocaptor.com/dashboard/number-and-percent-format-for-charts-bar-line-etc
http://jfree.org/phpBB2/viewtopic.php?f=3&t=24268
http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=13797&sid=8459981dcbb26de2f55be5c4da97e51a


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

最佳答案

如果查看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);


我相信您也可以引用%,如下所示:

DecimalFormat pctFormat = new DecimalFormat("##.0'%'");
valueAxis.setNumberFormatOverride(pctFormat);

08-28 21:53