Bokeh如何为multi_line方法创建的图形添加图例?

use*_*205 9 bokeh

我正在尝试将图例添加到图形中,其中包含由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")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,图例仅适用于第一行.当图例被定义为列表时,会出现错误:

p.multi_line(xs=[[4, 2, 5], [1, 3, 4]], ys=[[6, 5, 2], [6, 5, 7]], color=['blue','yellow'], legend=["first","second"])
Run Code Online (Sandbox Code Playgroud)

可以在很多行中添加图例吗?

小智 12

维护人员注意:将为Bokeh 1.0合并的PR#8218允许直接为多行和补丁创建图例,而无需任何循环.


为了使它更快,当你有大量数据或大表等时.你可以进行for循环:

1)列出颜色和图例

您始终可以
从bokeh.palettes导入"您的palett"导入颜色的散景调色板
检查此链接:bokeh.palets

colors_list = ['blue', 'yellow']
legends_list = ['first', 'second']
xs=[[4, 2, 5], [1, 3, 4]]
ys=[[6, 5, 2], [6, 5, 7]]
Run Code Online (Sandbox Code Playgroud)

2)你的身材

p = figure(plot_width=300, plot_height=300)
Run Code Online (Sandbox Code Playgroud)

3)制作一个for循环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)
Run Code Online (Sandbox Code Playgroud)


big*_*dot 8

维护者注意:将为Bokeh 1.0合并的PR#8218允许直接为多行和补丁创建图例,而无需任何循环或使用单独的line调用.


multi_line用于概念上单个事物,恰好具有多个子组件.想想德克萨斯州,它是一个合乎逻辑的东西,但它有几个不同的(和不相交的)多边形.您可能会使用Patches"德克萨斯"绘制所有多边形,但您只需要一个整体的图例.传说标志着逻辑事物.如果你想将几行标记为逻辑上不同的东西,你必须单独绘制它们p.line(..., legend="...")

  • `line` 创建单条线(每条线由多个点组成)如果您想要多条线,请为您想要的每条线调用 `line` (然后可以为每条线指定自己的颜色、虚线、线宽等)然后您还可以给出每行都有一个“legend”属性,这将使其显示为单独的图例项。参见,例如http://bokeh.pydata.org/en/latest/docs/gallery/legend.html (2认同)

mas*_*-g3 5

在最近的版本中(我认为从 0.12.15 开始)可以向 multi_line 图中添加图例。您只需将“图例”条目添加到您的数据源。以下是从 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)
Run Code Online (Sandbox Code Playgroud)