如何在 Bokeh 上为 Columndatasource 传递单值列表?剧情不再渲染
How to pass single-value lists for Columndatasource on Bokeh? Plot is no longer rendering
我试图通过源传递多个情节信息,但列的长度不同。当我绘制 1 行时,它工作正常,但是当我更改代码以适用于多行时,绘图根本不再呈现。
我将我的来源定义为:
source = ColumnDataSource(data=dict(x1=[], y1=[], x2=[], y2=[], x3=[], y3=[]))
我的图和线是:
p = figure(x_axis_type="datetime", title="", sizing_mode="fixed", height = 500, width = 900)
p.line(x ="x1"[0], y="y1"[0], source=source)
我希望最终能够在此图上绘制多条线,但每条线可能具有不同数量的值,因此由于 ColumnDataSource 仅适用于相同长度的列,因此我将这些列放在单列中 -值列表:
来自我的 update() 函数。
source.data = dict(
x1=[df1['Time']],
y1=[df1['Value']],
x2=[df2['Time']],
y2=[df2['Value']],
x3=[df3['Time']],
y3=[df3['Value']],
)
我更改了问题的 df 名称。
我不确定它有多相关,但数据是 2 列,其中有很多行:
54231 2020-12-04 23:54:31.863000+00:00.
我的想法是,我可以获取字典的第一项(在 p.line 上),它会简单地使用那里的数据,但它不会再呈现,有人知道吗?
如果我在这里缺少您需要指导我的信息,请告诉我!
提前致谢。
如果您需要用不同的点数绘制多条线,那么您有两种选择:
对每一行使用单独的调用 line
,对每一行使用单独的 CDS(它们各自具有相同长度的列)
使用可以接受“列表列表”(或数组)的multi_line
一次绘制多条线(子列表或子数组可以 有不同的长度)。
source.data = dict(xs=[[1, 3, 2], [3, 4, 6, 6]],
ys=[[2, 1, 4], [4, 7, 8, 5]])
p.multi_line('xs', 'ys', source=source)
在我看来,您的问题源于这一行:
p.line(x="x1"[0], y="y1"[0], source=source)
x="x1"[0]
没有做 x = "the first value from x1"
,它实际做的是这样的:x="x"
因为你只是将字符串 "x1"
分割为第一个(第零个) ) 元素,即子串 "x"
.
我试图通过源传递多个情节信息,但列的长度不同。当我绘制 1 行时,它工作正常,但是当我更改代码以适用于多行时,绘图根本不再呈现。
我将我的来源定义为:
source = ColumnDataSource(data=dict(x1=[], y1=[], x2=[], y2=[], x3=[], y3=[]))
我的图和线是:
p = figure(x_axis_type="datetime", title="", sizing_mode="fixed", height = 500, width = 900)
p.line(x ="x1"[0], y="y1"[0], source=source)
我希望最终能够在此图上绘制多条线,但每条线可能具有不同数量的值,因此由于 ColumnDataSource 仅适用于相同长度的列,因此我将这些列放在单列中 -值列表: 来自我的 update() 函数。
source.data = dict(
x1=[df1['Time']],
y1=[df1['Value']],
x2=[df2['Time']],
y2=[df2['Value']],
x3=[df3['Time']],
y3=[df3['Value']],
)
我更改了问题的 df 名称。
我不确定它有多相关,但数据是 2 列,其中有很多行:
54231 2020-12-04 23:54:31.863000+00:00.
我的想法是,我可以获取字典的第一项(在 p.line 上),它会简单地使用那里的数据,但它不会再呈现,有人知道吗?
如果我在这里缺少您需要指导我的信息,请告诉我!
提前致谢。
如果您需要用不同的点数绘制多条线,那么您有两种选择:
对每一行使用单独的调用
line
,对每一行使用单独的 CDS(它们各自具有相同长度的列)使用可以接受“列表列表”(或数组)的
multi_line
一次绘制多条线(子列表或子数组可以 有不同的长度)。source.data = dict(xs=[[1, 3, 2], [3, 4, 6, 6]], ys=[[2, 1, 4], [4, 7, 8, 5]]) p.multi_line('xs', 'ys', source=source)
在我看来,您的问题源于这一行:
p.line(x="x1"[0], y="y1"[0], source=source)
x="x1"[0]
没有做 x = "the first value from x1"
,它实际做的是这样的:x="x"
因为你只是将字符串 "x1"
分割为第一个(第零个) ) 元素,即子串 "x"
.