我想给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行使用相同的颜色,见下文:
问题:
1)如何将pandas数据帧传递到bokeh的multi-u行?
2)如果不能直接操作,我如何操作数据帧数据,以便多行将创建具有不同颜色的每一行?
提前谢谢。
您需要为多行提供颜色列表。在你的例子中,你会这样做:
下面是对第二个例子的一个更通用的修改,它或多或少地实现了您最终的目的,但是更简洁一些,也许更像是Python:
结果是:
维护者注意:多年前,
bokeh.charts
API被弃用并删除了过时:
你需要绘制一个时间序列图。这样可以方便地插入图例。TimeSeries属性可以位于bokeh.\u legacy\u图表下。请参阅下面的示例:
http://docs.bokeh.org/en/0.9.3/docs/user_guide/charts.html
相关问题 更多 >
编程相关推荐