Python plotnine - 添加一个矩形区域

问题描述

我已经开始使用 plotnine 并想创建一个图表,其中红色区域高于 40,蓝色区域低于 -40。

chart with red and blue rectangles

我可以用下面的代码来近似它,但它看起来很笨拙。执行此操作的“正确”方法是什么?

import pandas as pd
from plotnine import *

vals = np.random.randint(-50,50,size=20)
df = pd.DataFrame({"val":vals})
ggplot(df,aes(x=df.index,y = 'val')) \
   + geom_line() \
   + geom_hline(yintercept=40,size=20,colour='red',alpha=0.5) \
   + geom_hline(yintercept=-40,colour='blue',alpha=0.5) 

解决方法

您可以使用 geom geom_rect() 添加带有 plotnine 的矩形区域。

+geom_rect(data = dfwithnumbersyoulike,aes(xmin = yourxmin,xmax = yourxmax,ymin = yourymin,ymax = yourymax,fill = #ff0000,alpha = 0.7)) #red
+geom_rect(data = dfwithnumbersyoulike2,aes(xmin = yourxmin2,xmax = yourxmax2,ymin = yourymin2,ymax = yourymax2,fill = #0000ff,alpha = 0.7)) #blue

(或者只是将 geom_hline 转换为高于 40 和低于 -40