Как сделать категорический барплот с временными рядами в Боке? - PullRequest
1 голос
/ 26 марта 2020

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

Мой кадр данных выглядит так:

    VRI    TIME      QTY
0   308 00:00:00    613.0
1   308 00:15:00    581.0
...
92  309 00:00:00    299.0
93  309 00:15:00    300.5
...
188 310 00:00:00    166.0
189 310 00:15:00    125.0
...
284 328 00:00:00    133.5
285 328 00:15:00    85.5

VRI должен быть категориальной переменной, поэтому я хотел бы создать 4 гистограммы рядом друг с другом.

На оси X я хотел бы иметь столбец ВРЕМЯ, который состоит из всех часов дня за 15 минут.

Вот как мой код выглядит сейчас:

source = ColumnDataSource(vri_data)

p = figure(x_axis_type='datetime', title='Total traffic intensity per VRI', plot_width=1000)
p.vbar(x='time',top='aantal', width=timedelta(minutes=10), source=source, hover_line_color="black")

p.xaxis.axis_label = 'Time'
p.yaxis.axis_label = 'Traffic intensity'

hover = HoverTool(tooltips=
                  [
    ('Time', '@time'),
    ('Traffic Intensity', '@aantal'),
    ('VRI Number', '@vri')
])

p.add_tools(hover)



show(p)

Он выводит это: bokehplot

На этом графике размещены все 4 графика друг на друга, делая некоторые невидимыми. Теперь я хотел бы иметь 4 гистограммы рядом друг с другом, а не друг над другом, по одному для каждого отдельного значения VRI.

Я пытался использовать:

p = figure(x_range = vri_data['vri'], ...

Но это выводит ValueError: Unrecognized range input:

Кто-нибудь знает исправление для получения графика, как я хочу?

Спасибо!

1 Ответ

2 голосов
/ 26 марта 2020

Существует два варианта:

  1. Поверните ось X на правильную категориальную, сделав каждый из этих 15-минутных интервалов отдельной категорией. Это позволит вам использовать вложенные категории, как описано здесь в документации Bokeh.
  2. Делайте все это вручную. Либо добавьте столбец color к источнику данных и укажите его соответствующий параметр vbar, либо просто создайте 4 vbar, по 1 для каждого значения VRI.
...