如何在 CategoryPlot 图表上格式化为两位小数
How to format to two decimal places on CategoryPlot chart
我试图通过我的 JRXML 报告将我的报告格式化为仅显示 2 位小数和百分比,但即使使用 class 定制器,它也无法正常工作,当它显示在 PDF 文件中时。
我的代码(定制程序 class):
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartCustomizer;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
public void customize(JFreeChart chart, JRChart jasperChart){
CategoryPlot barPlot = (CategoryPlot) chart.getPlot();
BarRenderer renderer = (BarRenderer) barPlot.getRenderer();
NumberFormat formatter = new DecimalFormat("#0.00%");
formatter.setMinimumFractionDigits(2);
StandardCategoryItemLabelGenerator scilg2 = new StandardCategoryItemLabelGenerator("{0} {2}", formatter);
renderer.setItemLabelGenerator(scilg2);
}
我已经在每个论坛上搜索过,但没有找到答案,大多数都应用于饼图,但我不是这样。
PS: 我使用的是 JFreeChart 1.0.0 版本和 iReport 1.2.8。
使用 ArgumentIndex 值 {3}
,看到 here, and supply a separate percentFormatter
. Using v.1.5.3, I added the following to BarChartDemo1
得到显示的图像:
plot.setOrientation(PlotOrientation.HORIZONTAL);
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMinimumFractionDigits(2);
renderer.setDefaultItemLabelGenerator(
new StandardCategoryItemLabelGenerator(
"{0} {1} {2} {3}", NumberFormat.getInstance(), percent));
renderer.setDefaultItemLabelsVisible(true);
我使用的是 JFreeChart 1.0.0 版本和 iReport 1.2.8。
所以我终于能够使用下面的代码格式化数字 - 发布以便如果有人最终遇到与我相同的问题,他们可以更正它。
NumberFormat formatter = new DecimalFormat("#0.00'%'");
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
StandardCategoryItemLabelGenerator base = new StandardCategoryItemLabelGenerator("{2}",formatter);
renderer.setBaseItemLabelGenerator(base);
barPlot.setRenderer(renderer);
您必须使用 ArgumentIndex 值 {2},然后您需要使用 setRenderer() 方法发送对所有已注册侦听器的更改事件。
感谢@trashgod (https://whosebug.com/users/230513/trashgod) 的帮助,我必须解决您的代码并在以前版本的 JFreeChart 上显示结果。
链接:
我试图通过我的 JRXML 报告将我的报告格式化为仅显示 2 位小数和百分比,但即使使用 class 定制器,它也无法正常工作,当它显示在 PDF 文件中时。
我的代码(定制程序 class):
import net.sf.jasperreports.engine.JRChart;
import net.sf.jasperreports.engine.JRChartCustomizer;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
public void customize(JFreeChart chart, JRChart jasperChart){
CategoryPlot barPlot = (CategoryPlot) chart.getPlot();
BarRenderer renderer = (BarRenderer) barPlot.getRenderer();
NumberFormat formatter = new DecimalFormat("#0.00%");
formatter.setMinimumFractionDigits(2);
StandardCategoryItemLabelGenerator scilg2 = new StandardCategoryItemLabelGenerator("{0} {2}", formatter);
renderer.setItemLabelGenerator(scilg2);
}
我已经在每个论坛上搜索过,但没有找到答案,大多数都应用于饼图,但我不是这样。
PS: 我使用的是 JFreeChart 1.0.0 版本和 iReport 1.2.8。
使用 ArgumentIndex 值 {3}
,看到 here, and supply a separate percentFormatter
. Using v.1.5.3, I added the following to BarChartDemo1
得到显示的图像:
plot.setOrientation(PlotOrientation.HORIZONTAL);
NumberFormat percent = NumberFormat.getPercentInstance();
percent.setMinimumFractionDigits(2);
renderer.setDefaultItemLabelGenerator(
new StandardCategoryItemLabelGenerator(
"{0} {1} {2} {3}", NumberFormat.getInstance(), percent));
renderer.setDefaultItemLabelsVisible(true);
我使用的是 JFreeChart 1.0.0 版本和 iReport 1.2.8。
所以我终于能够使用下面的代码格式化数字 - 发布以便如果有人最终遇到与我相同的问题,他们可以更正它。
NumberFormat formatter = new DecimalFormat("#0.00'%'");
renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
StandardCategoryItemLabelGenerator base = new StandardCategoryItemLabelGenerator("{2}",formatter);
renderer.setBaseItemLabelGenerator(base);
barPlot.setRenderer(renderer);
您必须使用 ArgumentIndex 值 {2},然后您需要使用 setRenderer() 方法发送对所有已注册侦听器的更改事件。
感谢@trashgod (https://whosebug.com/users/230513/trashgod) 的帮助,我必须解决您的代码并在以前版本的 JFreeChart 上显示结果。
链接: