簡體   English   中英

使用 Bokeh 和 pandas 繪制多條線

[英]Plotting multiple lines with Bokeh and pandas

我想給 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 數據幀傳遞給散景的 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)

產生:

多線圖

維護者注意: bokeh.charts API 多年前已被棄用和刪除



過時的:

您需要繪制時間序列圖表。 這將允許您輕松插入圖例。 TimeSeries 屬性可以位於 bokeh._legacy_charts 下。 請參閱位於此處的以下示例:

http://docs.bokeh.org/en/0.9.3/docs/user_guide/charts.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM