Боке как добавить легенду к фигуре, созданной многострочным методом?
Я пытаюсь добавить легенду к фигуре, которая содержит две строки, созданные методом multi_line. Пример:
p = figure(plot_width=300, plot_height=300)
p.multi_line(xs=[[4, 2, 5], [1, 3, 4]], ys=[[6, 5, 2], [6, 5, 7]], color=['blue','yellow'], legend="first")
в этом случае легенда предназначена только для первой строки. Когда легенда определяется как список, возникает ошибка:
p.multi_line(xs=[[4, 2, 5], [1, 3, 4]], ys=[[6, 5, 2], [6, 5, 7]], color=['blue','yellow'], legend=["first","second"])
можно ли добавить легенду ко многим строкам?
3 ответов
Сопровождающий Примечание: PR #8218 который будет объединен для Bokeh 1.0, позволяет создавать легенды непосредственно для нескольких строк и патчей, без каких-либо циклов или использования отдельных line
звонки.
multi_line
предназначен для концептуально единичных вещей, которые имеют несколько субкомпонентов. Подумайте о штате Техас, это одна логическая вещь, но она имеет несколько различных (и непересекающихся) полигонов. Вы можете использовать Patches
делать все polys для "Texas", но вы хотите только одну легенду в целом. Легенды обозначают логические вещи. Если вы хотите пометить несколько строк как логически различные вещи, вам нужно будет нарисовать их все отдельно с помощью p.line(..., legend="...")
Сопровождающий Примечание : PR #8218 который будет объединен для Bokeh 1.0, позволяет создавать легенды непосредственно для нескольких строк и патчей без каких-либо циклов.
чтобы сделать это быстрее, когда у вас много данных или большая таблица и т. д. Вы можете сделать цикл for:
1) Составьте список цветов и легенд
вы всегда можете импортировать боке paletts для ваших цветов
из боке.палитры импорт " ваш палитр"
Проверьте эту ссылку: боке.palets
colors_list = ['blue', 'yellow']
legends_list = ['first', 'second']
xs=[[4, 2, 5], [1, 3, 4]]
ys=[[6, 5, 2], [6, 5, 7]]
2) ваша фигура
p = figure(plot_width=300, plot_height=300)
3) Сделайте для цикла throgh вышеуказанные списки и покажите
for (colr, leg, x, y ) in zip(colors_list, legends_list, xs, ys):
my_plot = p.line(x, y, color= colr, legend= leg)
show(p)
в более поздних выпусках (начиная с 0.12.15, я думаю) можно добавлять легенды к многострочным сюжетам. Вам просто нужно добавить запись "легенда" в источник данных. Вот пример, взятый из дискуссионного форума Google Groups:
data = {'xs': [np.arange(5) * 1, np.arange(5) * 2],
'ys': [np.ones(5) * 3, np.ones(5) * 4],
'labels': ['one', 'two']}
source = ColumnDataSource(data)
p = figure(width=600, height=300)
p.multi_line(xs='xs', ys='ys', legend='labels', source=source)