Можно ли сгруппировать DataSeriesItem вместо отображения по отдельности? - PullRequest
0 голосов
/ 14 марта 2019

У меня есть набор данных, который фиксирует время окончания розетки, как показано на снимке экрана ниже:

Sample Dataset, EOD Int Time is Time in Double format

Примечание. Последний столбец, EOD Int Time, преобразуется в 24-часовой десятичный формат, поскольку конструктор DataSeriesItem принимает числовое значение в качестве второго параметра.

В настоящее время я пытаюсь представить его в виде линейного графика, как в примере с данными времени с нерегулярными интервалами (см. здесь ).

Поскольку это было в наборе данных, я попытался захватить их в виде DataSetItem и затем поместить его в несколько DataSeries. Этот фрагмент кода ниже является основным:

       for(int i=0; i<objList.size(); i++){

            skuLogger.debug("Location value is: " + location);
            Object row = objList.get(i);
            Object[] doj = (Object[])row;
            skuLogger.debug("Record outlet is: " + doj[0].toString());
            skuLogger.debug("DataSeriesData name is: " + dataSeriesData.getStack());
            DataSeriesItem dsItem = new DataSeriesItem(doj[1].toString(),Double.valueOf(doj[3].toString()));

            if(dataSeriesData.getName() != null && location.equalsIgnoreCase(doj[0].toString())){
                skuLogger.debug("ds name is not null: " + dataSeriesData.getName() + "record number " + (i+1));
                location = doj[0].toString();
                dsArray.add(dsItem);
            }else if(dataSeriesData.getName() == null || !location.equals(doj[0].toString())) {
                skuLogger.debug("ds name is null - create new, record number " + (i+1));
                dataSeriesData = new DataSeries();
                dsArray = new ArrayList<DataSeriesItem>();
                location = doj[0].toString();
                dataSeriesData.setName(doj[0].toString());
                skuLogger.debug("ds name after set : " + dataSeriesData.getName() +"record number " + (i+1));
                dsArray.add(dsItem);
            }

            dataSeriesData.setData(dsArray);
            dataSeriesData.setPlotOptions(plotOptions);
            chart.getConfiguration().addSeries(dataSeriesData);
       }

То, что произошло, было сказано, что, например, MY012, три серии / линии появляются на графике, перекрывая друг друга, одинаковую длину и кривую. Каждая строка имеет три даты и время EOD. На скриншоте ниже показан текущий результат:

enter image description here

MY015 появляется три раза в разделе легенды. Должен показываться только один раз.

  1. В таком случае, можем ли мы на самом деле сгруппировать его как единое целое, так как вместо 30 записей в 30 сериях он должен отображаться как 30 записей в 12 сериях / розетках?

  2. Если нет, какие альтернативы могут быть рассмотрены для этой проблемы?

  3. Это ошибка или ограничение линейного графика в диаграммах Ваадина 4.0.5?

1 Ответ

0 голосов
/ 16 марта 2019

То, что произошло, было сказано, например, о MY012, три серии / линии появляются на графике

С того момента, как вы создаете столько «серий», сколько размер вашего списка:

for(int i=0; i<objList.size(); i++){
    ...
    chart.getConfiguration().addSeries(dataSeriesData);
 }

Мне кажется, вполне логично, не правда ли?

MY012 появляется в вашем списке 3 раза, поэтому вы собираетесь добавить 3 отдельные серии (с одной и той же легендой).

...