Диаграмма с более чем двумя Chart

Добрый день.

Пытаюсь разобраться с диаграммами.
Несмотря на то, что создаю 4 экземпляра Chart, на графике упорто отображаются только два (причем первый и последний из объявленных <> переданных).

2/4

2018-07-08_17-10-32

Создал SerialChart, привязал его к CollectionDataSource, сущности которой содержат дату (для оси абсцисс) и 4 значения (для отображения на отдельных чартах по оси ординат).
Таким образом весь XML-выглядит так:
<chart:serialChart id="dailyReadingChart" datasource="dailyReadingsDs"/> (в будущем планировал программно генерировать графики, поэтому пытался минимально зависеть от дескриптора)
Далее создал 4 чарта и добавил их:

Далее программно объявил 4 Chart'a
private void serialChartInit() {
    dailyReadingChart.setCategoryField("date");
    dailyReadingChart.setCaption("Суточные показания");
    dailyReadingChart.setDepth3D(20);
    dailyReadingChart.setAngle(10);
    ValueAxis valueAxis = new ValueAxis();
    valueAxis.setStackType(StackType.BOX_3D);
    valueAxis.setUnit("Вт");
    valueAxis.setTitle("Показания");
    List<ValueAxis> valueAxisList = new ArrayList<>();
    valueAxisList.add(valueAxis);
    dailyReadingChart.setValueAxes(valueAxisList);

    Graph aPlus = new Graph();
    aPlus.setBalloonText("А+ [[value]]");
    aPlus.setType(GraphType.COLUMN);
    aPlus.setFillAlphas(0.1d);
    aPlus.setValueField("aPlus");

    Graph aMinus = new Graph();
    aMinus.setBalloonText("A- [[value]]");
    aMinus.setType(GraphType.COLUMN);
    aMinus.setFillAlphas(0.1d);
    aMinus.setValueField("aMinus");

    Graph rMinus = new Graph();
    aMinus.setBalloonText("R- [[value]]");
    aMinus.setType(GraphType.COLUMN);
    aMinus.setFillAlphas(0.1d);
    aMinus.setValueField("rMinus");

    Graph rPlus = new Graph();
    aMinus.setBalloonText("R+ [[value]]");
    aMinus.setType(GraphType.COLUMN);
    aMinus.setFillAlphas(0.1d);
    aMinus.setValueField("rPlus");

    Graph [] graphs = {aPlus, aMinus, rPlus, rMinus};
    dailyReadingChart.addGraphs(graphs);
}

В конечном счете хотелось бы получить подобную картину. насколько понимаю, для этого нужно будет использовать StockChart:

Отображать одинакковые анные по трем-четырем категориям с возможностью переключения по Ds

%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA

Прошу прощения за немного абстрактный пост. Просто, если честно, документация чартов оставила больше вопросов. Попробую подытожить:
SerialChart не поддерживает более двух графиков или я делаю что-то не так?
Возможно, есть семплер со схожей реализацией?

Здравствуйте,

Я набросал небольшой пример такого графика:
image

<chart:serialChart id="serialChart"
                    height="100%"
                    categoryField="id"
                    depth3D="60"
                    angle="30"
                    width="100%">
    <chart:valueAxes>
        <chart:axis id="axis1"
                    stackType="BOX_3D"
                    title="Values"
                    unit="msec"/>
    </chart:valueAxes>
    <chart:data>
        <chart:item>
            <chart:property name="id" value="1"/>
            <chart:property name="count1" value="10" type="int"/>
            <chart:property name="count2" value="20" type="int"/>
            <chart:property name="count3" value="25" type="int"/>
        </chart:item>
        <chart:item>
            <chart:property name="id" value="2"/>
            <chart:property name="count1" value="20" type="int"/>
            <chart:property name="count2" value="22" type="int"/>
            <chart:property name="count3" value="10" type="int"/>
        </chart:item>
        <chart:item>
            <chart:property name="id" value="3"/>
            <chart:property name="count1" value="1" type="int"/>
            <chart:property name="count2" value="10" type="int"/>
            <chart:property name="count3" value="18" type="int"/>
        </chart:item>
    </chart:data>
    <chart:graphs>
        <chart:graph type="COLUMN"
                     fillAlphas="1"
                     valueAxis="axis1"
                     stackable="true"
                     valueField="count1"/>
        <chart:graph type="COLUMN"
                     fillAlphas="1"
                     valueAxis="axis1"
                     stackable="true"
                     valueField="count2"/>
        <chart:graph type="COLUMN"
                     fillAlphas="1"
                     stackable="true"
                     valueAxis="axis1"
                     valueField="count3"/>
    </chart:graphs>
</chart:serialChart>

Попробуйте создать его программно. Загрузчики из XML в конечном итоге вызывают те же самые методы API.

Также рекомендую посмотреть пример на сайте AmCharts: https://www.amcharts.com/demos/3d-stacked-column-chart/ JSON конфигурация графиков почти дословно преобразуется в XML или вызовы Java API, поэтому можно использовать все примеры AmCharts.

К сожалению, мы не можем ответить, что не так с вашим кодом не имея тестового проекта или теста, который можно легко запустить.

2 симпатии

Юрий, огромное спасибо.

Ошибка оказалась гораздо банальнее - при объявлении графов копировал код и в итоге очепятался при задании атрибутов.

Глаз замылился

Graph rPlus = new Graph();
aMinus.setBalloonText(“R+ [[value]]”);

Огромное спасибо за пример, удалось полностью воспроизвести.