我添加了数据库查询,我可以在详细信息视图中查看数据。
但无法绘制散点图。 X轴有一列,Y轴有一列,标签名有一列。如何使用iReport绘制这个?
我添加了散点图调色板,但未获取有关如何设置X和Y轴列以绘制所有点的任何文档。我在散点图中只得到一点。
答案 0 :(得分:2)
您的第一个问题是将数据源传递给图表,如果您使用的是主数据源,则需要将图表放在summary
波段,因为您的数据源尚未在title
波段准备就绪并且正在detail
频段上进行迭代,因此它将无法正常工作(注意:如果您在数据带中也使用数据源,那么它必须是JRRewindableDataSource)。
如果您需要在其他频段中使用它,那么summary
频段我建议您创建一个子报告,并将其包含在所需的频段传递图表数据源或连接到子报告。
使用<scatterChart>
和<xyDataset>
来实现散点图,以设置您使用<xySeries>
标记的系列和x,y数据
在iReport中,右键单击图表,选择图表数据,然后选择标签详细信息 和添加 XY系列
<xySeries>
<seriesExpression><![CDATA[$F{Series}]]></seriesExpression>
<xValueExpression><![CDATA[$F{X}]]></xValueExpression>
<yValueExpression><![CDATA[$F{Y}]]></yValueExpression>
</xySeries>
如果您只有1个系列,则可以在seriesExpression
<seriesExpression><![CDATA["dummy"]]></seriesExpression>
完整的jrxml示例
<?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="ScatterPlot" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="ebc92eb9-c769-4888-98de-b1d60670725c">
<queryString>
<![CDATA[]]>
</queryString>
<field name="Series" class="java.lang.String"/>
<field name="X" class="java.lang.Double"/>
<field name="Y" class="java.lang.Double"/>
<columnHeader>
<band height="20">
<staticText>
<reportElement x="100" y="0" width="100" height="20" uuid="978a0093-4e67-40e3-baee-8340ccc23b8f"/>
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<text><![CDATA[X]]></text>
</staticText>
<staticText>
<reportElement x="0" y="0" width="100" height="20" uuid="b97c9f78-ad74-4d9f-af46-ee3fc3e5351f"/>
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<text><![CDATA[Series]]></text>
</staticText>
<staticText>
<reportElement x="200" y="0" width="100" height="20" uuid="e50dab9b-c8f7-4cc0-a8f7-3ca4438c746b"/>
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<text><![CDATA[Y]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20">
<textField pattern="###0.00">
<reportElement x="100" y="0" width="100" height="20" uuid="8d365885-a6f8-40be-8ad0-012e45a37543"/>
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement textAlignment="Right" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{X}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="0" width="100" height="20" uuid="f08b3a38-8130-4609-b70d-b10b9d8d648b"/>
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{Series}]]></textFieldExpression>
</textField>
<textField pattern="###0.00">
<reportElement x="200" y="0" width="100" height="20" uuid="83638866-5bd1-4ee4-ac1a-455c406f3621"/>
<box topPadding="2" leftPadding="2" bottomPadding="2" rightPadding="2">
<pen lineWidth="0.5"/>
<topPen lineWidth="0.5"/>
<leftPen lineWidth="0.5"/>
<bottomPen lineWidth="0.5"/>
<rightPen lineWidth="0.5"/>
</box>
<textElement textAlignment="Right" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{Y}]]></textFieldExpression>
</textField>
</band>
</detail>
<summary>
<band height="257" splitType="Stretch">
<scatterChart>
<chart>
<reportElement x="4" y="16" width="280" height="237" uuid="b9968e83-13aa-48fc-acf5-3d646f45f28d"/>
<chartTitle/>
<chartSubtitle/>
<chartLegend/>
</chart>
<xyDataset>
<xySeries>
<seriesExpression><![CDATA[$F{Series}]]></seriesExpression>
<xValueExpression><![CDATA[$F{X}]]></xValueExpression>
<yValueExpression><![CDATA[$F{Y}]]></yValueExpression>
</xySeries>
</xyDataset>
<scatterPlot isShowLines="false" isShowShapes="true">
<plot/>
<xAxisFormat>
<axisFormat/>
</xAxisFormat>
<yAxisFormat>
<axisFormat/>
</yAxisFormat>
</scatterPlot>
</scatterChart>
</band>
</summary>
</jasperReport>
csv数据示例
+--------+-----+-----+
| Series | X | Y |
+--------+-----+-----+
| A | 1.2 | 0.3 |
| A | 0.5 | 0.2 |
| B | 0.7 | 0.6 |
| B | 0.1 | 0.5 |
+--------+-----+-----+
<强>结果强>
要配置图表,请使用图表上的属性设置,如果您需要使用属性无法实现的特殊配置,则可以实现ChartCustomizer
见例如