当前位置: 首页 > 知识库问答 >
问题:

如何在类别图图表上设置到两个小数位的格式

卫宏硕
2023-03-14

我正在尝试格式化我的报告,通过我的JRXML报告仅显示2位小数百分比,但即使使用类定制器,它也不起作用,当它显示在PDF文件上时。

我的代码(定制器类):

       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。

共有2个答案

子车桐
2023-03-14

我使用的是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://stackoverflow.com/users/230513/trashgod)的帮助,我开始处理你的代码,并在以前版本的JFreeChart上显示结果。

链接:

CategoryPlot - setRenderer

抽象类别项目标签生成器

宋翔
2023-03-14

使用ArgumentIndex值< code>{3},如此处所示,并提供单独的< code>percentFormatter。使用v.1.5.3,我将以下内容添加到< code>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);

 类似资料:
  • 问题内容: 我想显示: 如 和: 如 不管小数点的长度或是否有任何小数位,我都希望显示带有2个小数位的a,并且我想以一种有效的方式来做到这一点。目的是显示货币值。 例如, 问题答案: 我想您可能正在使用模块中的对象?(如果您需要精确到小数点后两位精确到两位数且任意大的数字,那么绝对应该如此,这就是您的问题标题所暗示的……) 如果是这样,文档的“ 十进制常见问题解答” 部分将包含一个问题/答案对,这

  • 设置图表格式和自定图表 可以用多种方式来设置图表格式。例如,可以更改图表轴的外观和位置,添加投影,移动图例,组合显示不同的图表类型。通过用 “选择 ”工具选定图表并选择 “对象 ”>“图表 ”>“类型 ”,您可以查看图表的设置格式选项。 您还可以用多种方式手动自定您的图表。您可以更改底纹的颜色;更改字体和文字样式;移动、对称、切变、旋转或缩放图表的任何部分或所有部分;并自定列和标记的设计。您可以对

  • 问题内容: 我要显示: 和: 不管小数点的长度或是否有小数位,我都希望显示一个带有2个小数位的,并且我想以一种有效的方式做到这一点。目的是显示货币值。 例如, 问题答案: 我想你可能正在使用模块中的对象?(如果你需要精确到小数点后两位任意大数的精度,则绝对应该如此,这就是你的问题标题所建议的……) 如果是这样,则文档的“ 十进制常见问题解答”部分将包含一个问题/答案对,这可能对你有用: 问:在具有

  • 问题内容: 我想为正在执行的项目调整位图的大小。我设法通过将cgbitmapcontextref转换为像素数组,然后操纵像素数组,然后从操纵的像素数据生成新图像来做到这一点。这种方式非常麻烦。 我想知道是否还有其他方法可以调整CGBitmapContextRef的大小。谢谢。 问题答案: 如果您不愿意,这里有一些基于UIKit的简单图像大小调整例程。此扩展通过裁剪,缩放,宽高比填充和宽高比拟合(类

  • 我正在使用Chart.js,我试图将饼图上的标签移动到饼图区域之外(见红色X): 这是我现在的代码: 我不想使用图例,也找不到移动标签的内置方法。是否有一种方法可以在不更改<code>图表的情况下执行此操作。js?实现目标的最佳方式是什么?

  • 我的工作代码如下: 它产生以下输出: 但是我的情节有两个问题我似乎无法解决: 即使我用pd.options.display.float_format = '{:.2f}格式裁剪文本显示,该图仍然显示14位小数。