How to plot selected columns of a Pandas dataframe using Bokeh 2.4.3 [重复]

问题描述 投票:0回答:2

我想使用散景绘制一系列 pandas 列,即一张图表中的多条线。显示一列/行的代码:

import pandas as pd
import numpy as np

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource

df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)), columns=list('ABCDF'))

sss = ColumnDataSource(df)
p = figure(height=300, width=300)
x = df.index
y = df[['B']]

p.line(x, y)
show(p)

现在,如何在同一折线图中绘制 A、C 和 F 列?

我试过这个,但不起作用:

x = df.index
y = df[['A', 'C', 'F']]
p.line(x, y)
show(p)
python pandas bokeh
2个回答
0
投票

要显示多行,您需要对不同的列多次使用

p.line()
。请注意,在下面更新的代码中,我还使用了
color
来显示多行。此外,将 df 行减少到 10,这样您就可以清楚地看到线条。希望这就是您要找的...

import pandas as pd
import numpy as np

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource

df = pd.DataFrame(np.random.randint(0,100,size=(10, 5)), columns=list('ABCDF'))

sss = ColumnDataSource(df)
p = figure(height=300, width=300)
p.line(x=df.index, y = df.A, color="blue")
p.line(x=df.index, y = df.B, color="red")
p.line(x=df.index, y = df.C, color="green")
p.line(x=df.index, y = df.F, color="black")
show(p)

输出图


0
投票

要使用 Bokeh 在同一图表中将多个列绘制为线条,可以将列名和列数据的字典传递给 ColumnDataSource 函数,然后在 p.line 函数中引用字典中的键。这是一个适用于您的案例的示例代码片段:

import pandas as pd
import numpy as np

from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource

df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)),         columns=list('ABCDF'))

# create ColumnDataSource with multiple columns
source = ColumnDataSource(data=dict(x=df.index, y1=df['A'], y2=df['C'], y3=df['F']))

p = figure(height=300, width=300)
# plot multiple lines using dictionary keys
p.line(x='x', y='y1', source=source, color='red')
p.line(x='x', y='y2', source=source, color='blue')
p.line(x='x', y='y3', source=source, color='green')
show(p)

在这个例子中,我们首先创建一个包含键'x'、'y1'、'y2'和'y3'的字典,其中'x'是数据帧的索引,'y1'、'y2'和'y3' 是数据框中的 A、C 和 F 列。然后我们从这个字典创建一个 ColumnDataSource 对象。

要绘制多条线,我们使用 p.line() 函数并将 x 和 y 值分别指定为每条线的字典键“x”和“y1”、“y2”或“y3”。我们还将源参数设置为我们之前创建的 ColumnDataSource 对象。最后,我们可以使用颜色参数自定义每行的颜色。

这应该生成一个包含三行的折线图,A、C 和 F 列各一条。

© www.soinside.com 2019 - 2024. All rights reserved.