我正在使用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);