如何在python中基于条件添加geom_点图层

如何在python中基于条件添加geom_点图层,python,plotnine,Python,Plotnine,我正在使用基于R的python软件包plotnine,我正在尝试创建一个绘图,其中我希望绘制一条线,然后,我希望添加一个几何点图层,如果验证了给定的标准,该图层只绘制一些点 因此,我有一个数据帧,其中包含一个包含实数的变量(这是我想要绘制为一行的变量),然后是一个二进制变量。如果第二个变量的值为1,我想用第一个变量的值绘制点,如果第二个变量的值为0,则不绘制点 我提供了一个小数据帧作为示例 import pandas as pd from plotnine import ggplot, aes,

我正在使用基于R的python软件包
plotnine
,我正在尝试创建一个绘图,其中我希望绘制一条线,然后,我希望添加一个几何点图层,如果验证了给定的标准,该图层只绘制一些点

因此,我有一个数据帧,其中包含一个包含实数的变量(这是我想要绘制为一行的变量),然后是一个二进制变量。如果第二个变量的值为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,则值为a,如果b=0,则值为None,但这感觉有点笨拙

您必须使用一个数据帧,其中包含您想要在点图层中的选定数据

(ggplot(df,aes(x='a'))
+几何线(aes(y='a'),颜色='黑色')
+几何点(df[df['b']==1],aes(y='a'))或几何点(df.query('b==1'),aes(y='a'))
)