gpt4 book ai didi

python - 用 Bokeh 和 pandas 绘制多条线

转载 作者:IT老高 更新时间:2023-10-28 20:52:47 26 4
gpt4 key购买 nike

我想给 Bokeh 一个 pandas 数据框来绘制一个包含多条线的折线图。

x 轴应该是 df.index,每个 df.columns 应该是单独的一行。

这是我想做的:

import pandas as pd
import numpy as np
from bokeh.plotting import figure, show

toy_df = pd.DataFrame(data=np.random.rand(5,3), columns = ('a', 'b' ,'c'), index = pd.DatetimeIndex(start='01-01-2015',periods=5, freq='d'))

p = figure(width=1200, height=900, x_axis_type="datetime")
p.multi_line(df)
show(p)

但是,我得到了错误:

RuntimeError: Missing required glyph parameters: ys

相反,我设法做到了:

import pandas as pd
import numpy as np
from bokeh.plotting import figure, show

toy_df = pd.DataFrame(data=np.random.rand(5,3), columns = ('a', 'b' ,'c'), index = pd.DatetimeIndex(start='01-01-2015',periods=5, freq='d'))

ts_list_of_list = []
for i in range(0,len(toy_df.columns)):
ts_list_of_list.append(toy_df.index)

vals_list_of_list = toy_df.values.T.tolist()

p = figure(width=1200, height=900, x_axis_type="datetime")
p.multi_line(ts_list_of_list, vals_list_of_list)
show(p)

那(粗鲁地)完成了这项工作,但它对所有 3 行使用相同的颜色,见下文:

enter image description here

问题:

1) 如何将 pandas 数据帧传递到 Bokeh 的 multi_line?

2) 如果不能直接使用,我该如何操作数据框数据,以便 multi_line 为每条线创建不同的颜色?

提前致谢。

最佳答案

您需要向 multi_line 提供颜色列表。在您的示例中,您会这样做:

p.multi_line(ts_list_of_list, vals_list_of_list, line_color=['red', 'green', 'blue'])

这是对您的第二个示例的更通用的修改,它或多或少地完成了您最终得到的结果,但更简洁,也许更 Pythonic:

import pandas as pd
import numpy as np
from bokeh.palettes import Spectral11
from bokeh.plotting import figure, show, output_file
output_file('temp.html')

toy_df = pd.DataFrame(data=np.random.rand(5,3), columns = ('a', 'b' ,'c'), index = pd.DatetimeIndex(start='01-01-2015',periods=5, freq='d'))

numlines=len(toy_df.columns)
mypalette=Spectral11[0:numlines]

p = figure(width=500, height=300, x_axis_type="datetime")
p.multi_line(xs=[toy_df.index.values]*numlines,
ys=[toy_df[name].values for name in toy_df],
line_color=mypalette,
line_width=5)
show(p)

产生:

multi_line plot

关于python - 用 Bokeh 和 pandas 绘制多条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31520951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com