Jasper HTML5 按结果集分组的多线图

Jasper HTML5 multiline chart with group by result set

我有 sql 做双重分组的查询(第 1 列和第 2 列),结果集采用以下格式

我正在尝试按以下格式在 jasper studio/ireport 中创建多线 HTML5 图表:

  1. xAxis(Category) 将具有 column2 值(不同)。在此示例中,xAxis
  2. 上的三个值
  3. yAxis(度量值)将有第 3 列值,对于第 1 列中的每个值,它应该有一行包含来自第 3 列的数据。所以第 1 列中有 4 个不同值的四行。

这个结果集可以实现吗?我试图创建组,为措施添加条件但没有结果。

你需要做的就是使用column2作为rows/category级别,column1作为columns/series级别。

像这样:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Html5Chart" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <field name="column1" class="java.lang.String"/>
    <field name="column2" class="java.lang.String"/>
    <field name="column3" class="java.lang.Double"/>
    <summary>
        <band height="500">
            <componentElement>
                <reportElement x="0" y="0" width="802" height="500"/>
                <hc:chart xmlns:hc="http://jaspersoft.com/highcharts" xsi:schemaLocation="http://jaspersoft.com/highcharts http://jaspersoft.com/schema/highcharts.xsd" type="Line">
                    <multiAxisData>
                        <multiAxisDataset>
                        </multiAxisDataset>
                        <dataAxis axis="Rows">
                            <axisLevel name="column2">
                                <labelExpression><![CDATA["column 2"]]></labelExpression>
                                <axisLevelBucket class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{column2}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <dataAxis axis="Columns">
                            <axisLevel name="column1">
                                <labelExpression><![CDATA["column 1"]]></labelExpression>
                                <axisLevelBucket class="java.lang.String">
                                    <bucketExpression><![CDATA[$F{column1}]]></bucketExpression>
                                </axisLevelBucket>
                            </axisLevel>
                        </dataAxis>
                        <multiAxisMeasure name="column3" class="java.lang.Double" calculation="Nothing">
                            <labelExpression><![CDATA["column 3"]]></labelExpression>
                            <valueExpression>$F{column3}</valueExpression>
                        </multiAxisMeasure>
                    </multiAxisData>
                </hc:chart>
            </componentElement>
        </band>
    </summary>
</jasperReport>