【问题标题】:Jasper Bar Chart Label TruncationJasper 条形图标签截断
【发布时间】:2012-08-10 11:38:14
【问题描述】:

我在 iReport 中创建了一个堆积条形图。在显示随机数量的字符后,每个条下的一些标签会被截断。有些标签有 1 个字母“O...”,其他标签有 6 个“Safet...”。其他人的所有字符都是“财务”。

iReport 中是否有一个属性可以设置为在每个栏下显示整个标签?类似于其他文本元素的“Stretch With Overflow”?

我在 iReport 4.5.1 和 4.7 中得到相同的行为。

这是该特定图表的 XML。

<stackedBarChart>
                <chart>
                    <reportElement x="0" y="26" width="555" height="257"/>
                    <chartTitle/>
                    <chartSubtitle/>
                    <chartLegend position="Bottom"/>
                </chart>
                <categoryDataset>
                    <dataset>
                        <incrementWhenExpression><![CDATA[$F{Percentage}<100]]></incrementWhenExpression>
                        <datasetRun subDataset="dsSectionChart">
                            <datasetParameter name="C_ID">
                                <datasetParameterExpression><![CDATA[$P{C_ID}]]></datasetParameterExpression>
                            </datasetParameter>
                            <datasetParameter name="L_STR">
                                <datasetParameterExpression><![CDATA[$P{L_STR}]]></datasetParameterExpression>
                            </datasetParameter>
                            <datasetParameter name="START_DATE">
                                <datasetParameterExpression><![CDATA[$P{START_DATE}]]></datasetParameterExpression>
                            </datasetParameter>
                            <datasetParameter name="END_DATE">
                                <datasetParameterExpression><![CDATA[$P{END_DATE}]]></datasetParameterExpression>
                            </datasetParameter>
                        </datasetRun>
                    </dataset>
                    <categorySeries>
                        <seriesExpression><![CDATA[$V{PRIORITY_STR}]]></seriesExpression>
                        <categoryExpression><![CDATA[$F{sectionName}]]></categoryExpression>
                        <valueExpression><![CDATA[$V{R_COUNT}]]></valueExpression>
                        <labelExpression><![CDATA[$F{sectionName}]]></labelExpression>
                    </categorySeries>
                </categoryDataset>
                <barPlot isShowLabels="false" isShowTickMarks="true">
                    <plot labelRotation="0.0">
                        <seriesColor seriesOrder="0" color="#10253F"/>
                        <seriesColor seriesOrder="1" color="#558ED5"/>
                        <seriesColor seriesOrder="2" color="#C6D9F1"/>
                    </plot>
                    <itemLabel/>
                </barPlot>
            </stackedBarChart>

【问题讨论】:

  • 你能发布一个示例 sn-p 吗?您使用的是哪个版本的 iReport?

标签: jasper-reports ireport jfreechart


【解决方案1】:

简而言之,不:没有可以设置的简单属性来确保显示整个标签。在大多数情况下,这实际上是一个 JFreeChart 问题而不是 JasperReports 问题,因为呈现图表图像的是 JFreeChart。

通常最简单的解决方案是旋转标签。这给了他们更多的空间。以 45 度或 90 度试一试,看看这是否是可接受的解决方案。

也可以编写一个图表定制器来更精确地控制行为。不久前,我写了一篇关于 chart customizers 的文章,其中我准确介绍了在条形图中处理较长标签的示例。它可能对你有用。

【讨论】:

  • 我写了一个定制器来设置最大线:categoryPlot.getDomainAxis().setMaximumCategoryLabelLines(3);
  • @user119179 :您能解释一下您是如何编写自定义程序类的吗?我有类似的要求。
  • @Sharad 好久没有原码了。
  • @Sharad,答案中的链接包括图表定制器的可下载代码。除此之外,您还在寻找什么?
【解决方案2】:

我是堆栈溢出的新手。我确实尝试了几个选项来打印 ireport 图表的类别轴中的整个标签(完全标签)。我成功使用了以下选项。

请使用图表属性中的“类别轴刻度标签旋转”参数。给出一些旋转值,请注意值以角度给出。jrxml如下。

<categoryAxisFormat labelRotation="45.0"></categoryAxisFormat>

【讨论】:

    【解决方案3】:

    在 Jaspersoft Studio 中右键单击图表并 显示属性 -> 单击属性窗口中的 Chartplot 选项卡 ->打开 Category Axis Tick Label Font 属性 -> 在Category Axis TickLabel Rotation inputtext 中输入您的旋转度数。

    【讨论】:

    • 我将旋转角度改为 45 度,它可以工作。这应该标记为答案。最简单的解决方法和良好的结果。
    猜你喜欢
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 2012-03-12
    相关资源
    最近更新 更多