0

我正在使用plotnine基于 R 的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
 )

我能想到的唯一方法是创建一个辅助数据帧,其值为 a 如果 b=1 和 None 如果 b=0,但这感觉有点笨拙

4

1 回答 1

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'))
 )
于 2020-10-17T21:15:16.353 回答