Добавление баров ошибок поверх гистограмм в Bokeh

Я пытаюсь создать гистограмму с барами ошибок сверху. Я посмотрел на следующий ответ, чтобы создать такой взгляд. Мой код работает до тех пор, пока я не сделаю p.line(y_err_x, y_err_y, color="black" ) предположительно, из-за индексации оси x поскольку я получаю следующую ошибку: Unable to get property 'A' of undefined or null reference

Какое надлежащее использование? Заранее спасибо!

 from bokeh.io import show, output_notebook from bokeh.models import ColumnDataSource from bokeh.plotting import figure from bokeh.transform import factor_cmap output_notebook() groups= ['A', 'B', 'C', 'D'] counts = [5, 3, 4, 2] yerr = [1,2,3,4] source = ColumnDataSource(data=dict(groups=groups, counts=counts)) p = figure(x_range=groups, plot_height=350, toolbar_location=None, title="Values") p.vbar(x='groups', top='counts', width=0.9, source=source, legend="groups", line_color='white', fill_color=factor_cmap('groups', palette=["#962980","#295f96","#29966c","#968529"], factors=groups)) y_err_x = [] y_err_y = [] for px, py, err in zip(groups, counts, yerr): y_err_x.append((px, px)) y_err_y.append((py - err, py + err)) p.line(y_err_x, y_err_y, color="black" ) p.xgrid.grid_line_color = None p.legend.orientation = "horizontal" p.legend.location = "top_center" show(p) 

One Solution collect form web for “Добавление баров ошибок поверх гистограмм в Bokeh”

Техника этого ответа больше не нужна. Аннотации ошибок теперь встроены в Bokeh, см. Документацию:

https://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#whiskers

а также

https://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#bands

Вот полный пример:

 from bokeh.io import show, output_file from bokeh.models import ColumnDataSource, Whisker from bokeh.plotting import figure from bokeh.transform import factor_cmap output_file("error.html") groups= ['A', 'B', 'C', 'D'] counts = [5, 3, 4, 2] error = [0.8, 0.4, 0.4, 0.3] upper = [x+e for x,e in zip(counts, error) ] lower = [xe for x,e in zip(counts, error) ] source = ColumnDataSource(data=dict(groups=groups, counts=counts, upper=upper, lower=lower)) p = figure(x_range=groups, plot_height=350, toolbar_location=None, title="Values", y_range=(0,7)) p.vbar(x='groups', top='counts', width=0.9, source=source, legend="groups", line_color='white', fill_color=factor_cmap('groups', palette=["#962980","#295f96","#29966c","#968529"], factors=groups)) p.add_layout( Whisker(source=source, base="groups", upper="upper", lower="lower", level="overlay") ) p.xgrid.grid_line_color = None p.legend.orientation = "horizontal" p.legend.location = "top_center" show(p) 

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

Python - лучший язык программирования в мире.