2016-06-28 3 views
1

Я добавил запрос БД, с тем, что я могу просматривать данные в подробном представлении.Как построить диаграмму рассеяния в iReport с данными БД?

Но не в состоянии построить диаграмму рассеяния. Существует один столбец для оси X и один столбец для оси Y и один для названия метки. Как построить это с помощью iReport?

Я добавил палитру диаграммы рассеяния, но не получаю никакой документации о том, как установить столбцы для оси X и Y для построения графика всех точек. Я получаю только одно очко в диаграмме рассеяния.

+0

В чем проблема с добавлением закрытых голосов? –

+0

FYI, iReport устарел в течение длительного периода времени –

+0

'Как построить это с помощью инструмента ireport?' - Это слишком широкий вопрос, не так ли? –

ответ

2

Ваша первая задача состоит в передаче источника данных к диаграмме, если вы используете основной источник данных, необходимо поместить диаграмму в summary группе, так как ваш источник данных не готов в title группе и итерация на detail группы, следовательно, он не будет работать правильно (обратите внимание: если вы используете свой источник данных также подробно, он должен быть JRRewindableDataSource).

Если вам нужно использовать его в других диапазонах, то группа summary Я предлагаю вам сделать подзаголовок и включить его в требуемый источник данных диаграммы прохождения данных или соединение с подзаголовком.

Разброс участок достигается с помощью <scatterChart> и <xyDataset>, чтобы установить ряд и х, у данных вы используете <xySeries> тег

В иРепорт, щелкните правой кнопкой мыши таблицу, выберите таблицу данных выберите вкладка Сведения и добавить серию 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 | 
+--------+-----+-----+ 

Результат

outcome

Чтобы настроить ваш график использовать настройки свойств на диаграмме, если вам нужна специальная конфигурация, вы не можете достичь с помощью свойств можно реализовать ChartCustomizer

увидеть это, например

How to put benchmark line on barchart?

+0

Как сделать квадранты? Как и ось X будет нанесена на середину оси Y, а ось Y будет нанесена на середину оси X? –

+1

Для этого вам, вероятно, понадобится ChartCustomizer, есть метод в jfreechart public void setDomainZeroBaselineVisible (boolean visible) ;, но вы, вероятно, должны задать еще один вопрос, иллюстрирующий то, что вам нужно. –

+0

@SomnathMuluk, все еще проблема с этим? –

Смежные вопросы