2016-06-28 2 views
1

J'ai ajouté une requête DB, avec que je suis en mesure d'afficher les données dans la vue détaillée.Comment tracer un diagramme de dispersion dans iReport avec des données DB?

Mais pas en mesure de tracer un diagramme de dispersion. Il y a une colonne pour l'axe X et une colonne pour l'axe Y et une colonne pour le nom de l'étiquette. Comment tracer ceci en utilisant iReport?

J'ai ajouté une palette de diagramme de dispersion mais je n'ai pas reçu de documentation sur la façon de définir des colonnes pour les axes X et Y afin de tracer tous les points. Je reçois seulement un point dans le diagramme de dispersion.

+0

Qu'est-ce qui ne va pas avec la question pour l'ajout de votes serrés? –

+0

FYI, iReport est obsolète depuis une longue période de temps –

+0

'Comment tracer cela avec outil ireport?' - Il est question trop large, n'est-ce pas? –

Répondre

2

Votre premier problème est de passer une source de données à la carte, si vous utilisez principale source de données, vous devez mettre le tableau dans la bande summary, puisque votre source de données n'est pas prêt dans title bande et est une itération sur la bande detail, par conséquent, il ne fonctionnera pas correctement (note: si vous utilisez votre source de données aussi dans la bande de détail, il doit être un JRRewindableDataSource).

Si vous avez besoin de l'utiliser dans d'autres bandes alors summary bande je vous suggère de créer un sous-rapport et de l'inclure dans la source de données de passage de bande désirée ou la connexion au sous-rapport.

Le diagramme de dispersion est réalisée à l'aide d'un <scatterChart> et <xyDataset>, de mettre en série et x, les données y vous utilisez la balise <xySeries>

En iReport, cliquez sur le bouton droit graphique, sélectionnez Tableau de données, sélectionnez onglet Détails et ajouter des séries XY

<xySeries> 
    <seriesExpression><![CDATA[$F{Series}]]></seriesExpression> 
    <xValueExpression><![CDATA[$F{X}]]></xValueExpression> 
    <yValueExpression><![CDATA[$F{Y}]]></yValueExpression> 
</xySeries> 

Si vous avez seulement 1 série, vous pouvez passer une variable fictive dans seriesExpression

<seriesExpression><![CDATA["dummy"]]></seriesExpression> 

Exemple complet 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> 

données csv exemple

+--------+-----+-----+ 
| Series | X | Y | 
+--------+-----+-----+ 
| A  | 1.2 | 0.3 | 
| A  | 0.5 | 0.2 | 
| B  | 0.7 | 0.6 | 
| B  | 0.1 | 0.5 | 
+--------+-----+-----+ 

Résultat

outcome

Pour configurer votre carte utiliser les paramètres de propriétés sur le graphique, si vous avez besoin de configuration spéciale que vous ne pouvez pas obtenir avec les propriétés que vous pouvez mettre en œuvre un ChartCustomizer

voir par exemple

How to put benchmark line on barchart?

+0

Comment faire des quadrants? Comme axe X sera tracée sur le milieu de l'axe Y et axe Y sera tracée sur le milieu de l'axe X? –

+1

Pour cela vous aurez probablement besoin de ChartCustomizer, il y a une méthode dans jfreechart public void setDomainZeroBaselineVisible (boolean visible) ;, mais vous devriez probablement faire d'autres questions, illustrant exactement ce dont vous avez besoin. –

+0

@SomnathMuluk, ayant encore des problèmes avec cela? –