如何基于python中的条件添加geom_point图层

时间:2020-10-17 13:43:10

标签: python plotnine

我正在使用基于R的plotnine的python软件包ggplot,并尝试创建一个绘图,在该绘图中我想绘制一条线,然后,我想添加一个geom_point图层来绘制如果验证了给定的条件,则只有一些要点。

因此,我有一个数据框,其中的变量包含实数(这是我要绘制为一行的实数),然后是二进制变量。如果第二个变量的值为1,我想用第一个变量的值绘制点,而第二个变量的值为0,则什么也不要。

我以一个小数据框为例

import pandas as pd
from plotnine import ggplot, aes, geom_line, geom_point
d = dict(
    a = np.arange(10),
    b = [0, 0, 0, 1, 0, 0, 1, 0, 1, 0]
)
d = pd.DataFrame(d)

(ggplot(df, aes(x='a')) + 
 geom_line(aes(y='a'), color='black')
 # Some code to plot points with value a[i] if b[i]==1
 )

我能想到的唯一方法是创建一个第二个数据帧,如果b = 1,则值为b,如果b = 0,则为None,但这有点笨拙

1 个答案:

答案 0 :(得分:1)

您必须将数据框与所需的点图层中的选定数据一起使用。

(ggplot(df, aes(x='a'))
 + geom_line(aes(y='a'), color='black')
 + geom_point(df[df['b'] == 1], aes(y='a')) # or geom_point(df.query('b == 1'), aes(y='a'))
 )