使用ColumnDataSource在图表上绘制多条线

7

我有两个相同单位的变量,想要在同一条x轴上用Bokeh绘制。看起来plot.multi_line是正确的工具,但我无法从文档中找到正确的语法。我尝试过的方法(从文档中收集):

# df is a pandas DataFrame with contains 3 columns x, y1, y2

source = ColumnDataSource(data=df)
plot=figure()   
plot.multi_line(['x','x'], ['y1', 'y2'],  source=source)

另外尝试了以下方法:

plot.multi_line(xs=['x','x'], ys=['y1', 'y2'],  source=source)

结果为

运行时错误: 提供用户定义的数据源和可迭代值给glyph方法是不可能的。要么:

直接将所有数据作为文字传递:

p.circe(x=a_list, y=an_array, ...)

或者,将所有数据放入ColumnDataSource中并传递列名:

source = ColumnDataSource(data=dict(x=a_list, y=an_array)) p.circe(x='x', y='y', source=source, ...)

文档给出了这个例子:

p.multi_line([[1, 3, 2], [3, 4, 6, 6]], [[2, 1, 4], [4, 7, 8, 5]],
         color=["firebrick", "navy"], alpha=[0.8, 0.3], line_width=4)

显然,我不想使用原始列表来传递这些值。我不明白它,需要一点帮助。

1个回答

9

好的,我感到有些傻,只需要执行以下操作:

source = ColumnDataSource(data=df)
plot=figure()   
plot.line('x','y1',  source=source, line_color="red")
plot.line('x','y2',  source=source, line_color="blue")

在Matplotlib中,这个技巧是可行的...我对于"plot.multi_line"函数感到困惑(现在我不明白为什么要使用它,但是好吧)。


6
当您有一个由不相连的子行组成的单个“逻辑”行时,multi_line很有用。类比于使用patches绘制国家多边形,国家边界可能会有几个不相连的部分(例如海岛),但仍代表一个单一的逻辑实体。 - bigreddot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接