Вставить метки осей в Jasper Reports - PullRequest
0 голосов
/ 03 мая 2020

Я изучаю Java с помощью Jasper Reports и пытаюсь создать отчет с XYLineChart

Мой отчет в порядке, все данные отображаются так, как я хочу. Моя диаграмма отображает все данные, но оси X и Y не имеют имени (label), поэтому я не могу «знать», что это за данные.

Я хочу поместить имена моей оси в таблицу. Я немного почитал и нашел это в книге:

Линейный график также имеет две оси. Их метками можно управлять с помощью категории AxisLabelExpression и valueAxisLabelExpression ...

В книге приведен следующий синтаксис:

<!ELEMENT linePlot (plot, categoryAxisLabelExpression?,
categoryAxisFormat?, valueAxisLabelExpression?, valueAxisFormat?)>

<!ATTLIST linePlot
isShowLines (true | false) "true"
isShowShapes (true | false) "true">

Полный код jrxml находится в моем GitHub : Отчет

Ниже приведены строки, извлеченные из кода выше, о chart:

</band>
        <band height="164">
            <xyLineChart>
                <chart evaluationTime="Report">
                    <reportElement stretchType="ContainerHeight" x="20" y="20" width="280" height="144" uuid="e33fd328-3bfa-41f7-aa53-face45efaf74">
                        <propertyExpression name="net.sf.jasperreports.chart.range.axis.tick.interval"><![CDATA[value]]></propertyExpression>
                    </reportElement>
                    <box>
                        <topPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                        <leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                        <bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                        <rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#000000"/>
                    </box>
                    <chartTitle/>
                    <chartSubtitle/>
                    <chartLegend/>
                </chart>
                <xyDataset>
                    <dataset resetType="Report">
                        <datasetRun subDataset="CorpoDeProvaChartDataSet" uuid="320307a6-07d6-4d08-8f42-0537af75c157">
                            <dataSourceExpression><![CDATA[$P{CorpoDeProvaChartCollectionBeanParam}]]></dataSourceExpression>
                        </datasetRun>
                    </dataset>
                    <xySeries autoSort="true">
                        <seriesExpression><![CDATA[$F{serie}]]></seriesExpression>
                        <xValueExpression><![CDATA[$F{days}]]></xValueExpression>
                        <yValueExpression><![CDATA[$F{fck}]]></yValueExpression>
                        <labelExpression><![CDATA["TEst"]]></labelExpression>
                    </xySeries>
                </xyDataset>
                <linePlot>
                    <plot/>
                    <categoryAxisFormat>
                        <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
                    </categoryAxisFormat>
                    <valueAxisFormat>
                        <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
                    </valueAxisFormat>
                </linePlot>
            </xyLineChart>
            <textField>
                <reportElement x="143" y="111" width="100" height="30" uuid="a6f5c887-cac8-4304-b8d5-8b9bb492ee39"/>
                <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
        </band>

Я пытался изменить свой код следующим образом, но это просто дает мне ошибку:

...
                    <categoryAxisFormat>
                        <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
                    <categoryAxisLabelExpression><![CDATA["Days"]]></categoryAxisLabelExpression>
                    </categoryAxisFormat>
                    <valueAxisFormat>
                        <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
                    <valueAxisLabelExpression><![CDATA["fck"]]</valueAxisLabelExpression>
                    </valueAxisFormat>
...

Также я не смог найти ничего на вкладке свойств диаграммы Jaspersoft Studio, которая бы сработала. И любая ссылка, которую я мог найти, указывает на свойства valueAxisLabelExpression и valueAxisFormat, но я не знаю, как их установить.

Дополнительная информация:

  1. Я использую Eclipse IDE
  2. Мой отчет заполнен subDataSets с JRBeanCollectionDataSource class

Подводя итог, я хочу знать, как поставить label по осям X и Y XYLineChart в JasperReport.

Спасибо всем за помощь.

1 Ответ

0 голосов
/ 06 мая 2020

После некоторых попыток и чтения я сделал то, что хотел.

С первой попытки я использовал мой код chart, например:

<categoryAxisFormat>
    <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
    <categoryAxisLabelExpression><![CDATA["Days"]]></categoryAxisLabelExpression>
</categoryAxisFormat>
<valueAxisFormat>
    <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
    <valueAxisLabelExpression><![CDATA["fck"]]</valueAxisLabelExpression></valueAxisFormat>

Но правильный синтаксис :

<categoryAxisLabelExpression><![CDATA["Days"]]></categoryAxisLabelExpression>
<categoryAxisFormat>
    <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</categoryAxisFormat>
<valueAxisLabelExpression><![CDATA["fck (MPa)"]]></valueAxisLabelExpression>
<valueAxisFormat>
    <axisFormat labelColor="#000000" tickLabelColor="#000000" axisLineColor="#000000"/>
</valueAxisFormat>

Так что мне просто нужно было изменить порядок строк в моем коде. Спасибо всем ...

...