2017-12-18 3 views
1

Ich benutze Jaspersoft Studio Version 6.3.0.final mit JasperReports Library Version 6.3.0. Ich erstelle ein Liniendiagramm mit verschiedenen Serien- und Kategorienwerten. Meine Frage ist, dass, wenn der Graph geplottet wird, ich beobachtet habe, dass, wenn für eine Kategorie keine Werte für eine bestimmte Serie existieren, die Linie bricht und die Linie vom nächsten Datenpunkt aus erneut beginnt.Wie kann ich vermeiden, dass "Zeilentrennung" mit Liniendiagramm-JasperReport?

Gibt es trotzdem eine Verbindung, in der wir ALLE Punkte in einer bestimmten Serie verbinden können, so dass es sich um eine durchgehende einzelne Linie anstelle von gestrichelten Linien und Punkten handelt?

Ich habe ein Bild als ein Beispiel für das, was ich bekomme und ich tun möchte und meine .jrxml-Datei für das Liniendiagramm.

line chart example

<?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="chart_subreport" pageWidth="842" pageHeight="595" columnWidth="842" leftMargin="0" rightMargin="0" topMargin="10" bottomMargin="10"> 
<style name="table 1_TH" mode="Opaque" backcolor="#646464" forecolor="#FFFFFF" > 
    <box> 
     <pen lineColor="#969696" lineWidth="1.0"/> 
    </box> 
</style>  

<field name="TimePoints" class="java.util.Date"/> 
<field name="LongAxis" class="java.lang.Double"/> 
<field name="Lesion" class="java.lang.String"/> 

<detail> 
<band height="400" > 
       <printWhenExpression><![CDATA[$V{REPORT_COUNT}==1]]></printWhenExpression>      
     <lineChart> 
      <chart> 
       <reportElement style="table 1_TH" x="10" y="0" width="800" height="400"/>     
       <chartTitle> 
        <titleExpression><![CDATA["Lesion's evolution"]]></titleExpression> 
       </chartTitle>              
      </chart>     
      <categoryDataset> 
       <categorySeries> 
       <!-- This is the lesions you want to see on charts--> 
        <seriesExpression><![CDATA[$F{Lesion}]]></seriesExpression> 
        <!--You can change the format date here --> 
        <categoryExpression><![CDATA[(new SimpleDateFormat("MMM d, yyyy")).format($F{TimePoints})]]></categoryExpression> 
        <valueExpression><![CDATA[$F{LongAxis}]]></valueExpression> 
       </categorySeries> 
      </categoryDataset>           
       <linePlot isShowLines="true"> 
       <plot backcolor="#323232" /> 
       <categoryAxisFormat> 
        <axisFormat/> 
       </categoryAxisFormat> 
       <valueAxisFormat> 
        <axisFormat > 
        <labelFont> 
         <font fontName="Arial" size="10"/> 
        </labelFont> 
       </axisFormat> 
       </valueAxisFormat> 
      </linePlot>    
     </lineChart>  
    </band> 
</detail> 
</jasperReport> 
+0

Können wir einige Beispieldaten haben, mit denen Sie auch testen ?, für Läsion d Ich denke, Sie haben nur 1 Wert, für die anderen würde ich die Werte sehen müssen, die Sie verwenden. –

+0

Hallo Petter, Ich verwende nur einige Dummies Daten, um meine Liniendiagramme zu testen, ich stelle die Daten von Eclipse mit einem TableModel mit einem Spaltennamen wie: columnNames = new String [] {"Läsion", " TimePoints "," LongAxis "} Wenn Sie es also testen möchten, können Sie Ihre eigenen Daten verwenden, indem Sie eine" net.sf.jasperreports.engine.data.JRTableModelDataSource " –

+1

übergeben die Dummy-Daten, die Sie verwenden, erstellen Sie eine [ mcve] und es ist viel schneller für jeden, der es gerne testet. –

Antwort

0

ich erreicht zu bekommen, was ich will, habe ich geändert nur die Art des Diagramms, jetzt bin ich „timeSeriesChart“ verwenden.

<style name="table 1_TH" mode="Opaque" backcolor="#646464" forecolor="#FFFFFF" > 
    <box> 
     <pen lineColor="#969696" lineWidth="1.0"/> 
    </box> 
    </style>  
<queryString> 
    <![CDATA[]]> 
</queryString> 

<field name="TimePoints" class="java.util.Date"/> 
<field name="LongAxis" class="java.lang.Double"/> 
<field name="Lesion" class="java.lang.String"/> 
<field name ="nbInstance" class="java.lang.Integer"/> 

<detail> 
<band height="400" > 
       <printWhenExpression><![CDATA[$V{REPORT_COUNT}==$F{nbInstance}]]></printWhenExpression>    
     <timeSeriesChart> 
      <chart> 
       <reportElement style="table 1_TH" x="10" y="0" width="800" height="400"/>     
       <chartTitle> 
        <titleExpression><![CDATA["Lesion's evolution"]]></titleExpression> 
       </chartTitle>              
      </chart>    

      <timeSeriesDataset> 

       <timeSeries> 
        <seriesExpression><![CDATA[$F{Lesion}]]></seriesExpression> 
        <timePeriodExpression> <![CDATA[$F{TimePoints}]]></timePeriodExpression> 
         <valueExpression><![CDATA[$F{LongAxis}]]></valueExpression> 
       </timeSeries> 
      </timeSeriesDataset>     
       <timeSeriesPlot > 
       <plot backcolor="#323232" /> 
       <timeAxisLabelExpression/>     
       <timeAxisFormat> 
        <axisFormat/> 
       </timeAxisFormat> 
       <valueAxisLabelExpression/> 
       <valueAxisFormat> 
        <axisFormat/> 
       </valueAxisFormat> 
      </timeSeriesPlot>    
     </timeSeriesChart> 
    </band> 
</detail> 
Verwandte Themen