【问题标题】:How to add a geom_point layer based on a condition in python如何根据python中的条件添加geom_point图层
【发布时间】:2020-10-17 13:43:10
【问题描述】:

我正在使用基于 R 的 ggplot 的 python 包 plotnine 并且我正在尝试创建一个我想要绘制一条线的图,然后,我想添加一个 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 if b=1 和 None if b=0 的值,但这感觉有点笨拙

【问题讨论】:

    标签: python plotnine


    【解决方案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'))
     )
    

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      相关资源
      最近更新 更多