Равные отметки оси X для данных временного ряда - PullRequest
0 голосов
/ 18 мая 2018

У меня есть данные временных рядов, из которых я пытаюсь построить составную диаграмму области с помощью nvd3.Серии выглядят так:

xdata = ['2017-11-17', '2017-12-17', '2018-01-17', '2018-02-17', '2018-03-17', '2018-04-17']
ydata = [7277L, 9579L, 6291L, 6715L, 8743L, 9879L]

Я конвертирую даты в xdata в формат unix, и это выглядит так:

xdata = [1510873200000L,
   1513465200000L,
   1516143600000L,
   1518822000000L,
   1521241200000L,
   1523916000000L]

Затем я создаю диаграмму:

chart = stackedAreaChart(name='stackedAreaChart', 
                             height=400, 
                             width=400 
                             ,x_is_date=True
                            )
chart.add_serie(name = 'Chart1', y = ydata, x = xdata )

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

Как видите, даты не отображаются одинаково.Я бы хотел, чтобы это было 17 ноября 2017 года, 17 декабря 2017 года, 17 января 2018 года ...

Я раньше не работал с js, но все, что я пробовал, было неудачным.Я пытался добавить дополнительные серии, чтобы изменить формат оси X, но проблема в том, что дополнительные серии добавляются после построения графика, и эффект не виден.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Так здесь была опубликована та же проблема.

Подход состоит в том, чтобы назначить tickValues ​​для оси x для xdata.Вот решение, которое я написал:

chart = stackedAreaChart(name='stackedAreaChart' 
                         ,height=500 
                         ,width=900 
                         #,x_is_date=True
                         ,use_interactive_guideline = True
                         ,margin_bottom = 120
                        )
chart.create_x_axis(name = "xAxis", date = True,  format = '%b %Y' )
chart.axislist['xAxis']['tickValues']="""Object.values(datum[0])[0].map(x => x.x)"""

datum - это переменная данных, сгенерированная в js-скрипте при выводе chart.htmlcontent

До того, как я искал документацию для python-nvd3, но назначилtickValues там не документировано, поэтому мне пришлось делать это вручную с помощью javascript.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 22 мая 2018

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

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

...