bokeh hbar_stack не отображается должным образом при использовании даты и времени - PullRequest
0 голосов
/ 12 июля 2020

Я безуспешно пытаюсь построить hbar_stack с датами по оси x. Я делал обычные графики hbar с датами раньше без проблем, так что это должно быть что-то с hbar_stack. Вот код с некоторыми статистическими c данными:

start_date = datetime.datetime(2020, 7, 10, 10, 26, 15, 240666)
end_date = datetime.datetime(2020, 7, 10, 13, 27, 33, 741238)
tasks = ['task 1', 'task 2', 'task 3', 'task 4']
status = ['status_1', 'status_2', 'status_3', 'status_4']
exports = {'tasks': tasks, 'status_1': [datetime.datetime(2020, 7, 10, 13, 26, 59, 531234),
                                        datetime.datetime(2020, 7, 10, 13, 25, 16, 666837),
                                        datetime.datetime(2020, 7, 10, 10, 37, 16, 368927),
                                        datetime.datetime(2020, 7, 10, 10, 26, 15, 240666)],
           'status_2': [None, datetime.datetime(2020, 7, 10, 13, 27, 33, 741238),
                        datetime.datetime(2020, 7, 10, 11, 37, 7, 629667),
                        datetime.datetime(2020, 7, 10, 10, 27, 5, 540767)],
           'status_3': [None, None, None, datetime.datetime(2020, 7, 10, 10, 54, 17, 738024)],
           'status_4': [None, None, None, datetime.datetime(2020, 7, 10, 11, 2, 15, 196620)]}

p = figure(y_range=tasks, x_range=[start_date, end_date], x_axis_type='datetime', title="Tasks timeline",
          tools=["hover,pan,reset,save,wheel_zoom"], tooltips=None)
p.xaxis.formatter = DatetimeTickFormatter(
    days=["%m-%d-%Y"],
    months=["%m-%d-%Y"],
    years=["%m-%d-%Y"],
)
p.xaxis.major_label_orientation = radians(30)
p.hbar_stack(status, y='tasks', height=0.2, color=Spectral[11][:len(status)], source=ColumnDataSource(exports))

Как видно из данных, время разницы в минутах, но отображается с разницей в годах. При наведении курсора на данные (x, y) значение x не показывает дату, вместо этого отображается большое число, например 1.589e + 12. Любая помощь приветствуется.

введите описание изображения здесь

1 Ответ

0 голосов
/ 13 июля 2020
dts = [
    datetime(2020, 7, 10, 13, 26, 59, 531234),
    datetime(2020, 7, 10, 13, 25, 16, 666837),
    datetime(2020, 7, 10, 10, 37, 16, 368927),
    datetime(2020, 7, 10, 10, 26, 15, 240666)
]

# because the datetimes are in reverse order
ends = dts[0:-1]
starts = dts[1:]

p = figure(plot_height=350, x_axis_type="datetime", y_range=["a", "b", "c"])
p.hbar(y=["b", "b", "b"], left=starts, right=ends, 
       line_color="white", fill_color=["red", "blue", "orange"])
p.xaxis.formatter.hours = ["%b %Y %H:%M"]

show(p)

, что дает:

введите описание изображения здесь

...