matplotlib 使seaborn的regplot置信区间更透明(alpha参数)

7xllpg7q  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(217)

我在选择sns.regplot的alpha时遇到了一个问题,因为它不是图形(scatter_kwsline_kws)中自定义的选项之一,所以我试图通过创建两个重叠的图来解决这个问题。
这不会使置信区间着色变浅,因为scatter_kws指的是散点,而line_kws会更改整个最佳拟合线和着色置信区间的alpha。

columns = [ 
"col1",
"col2"
]

fig, ax = plt.subplots()

for col in columns:
    sns.regplot(x=df[col], y=df.y_val, scatter=False, ci = 95,
                scatter_kws={"alpha": 0.3}, label=col)
    
for col in columns:
    sns.regplot(x=df[col], y=df.y_val, scatter=False, ci = 0,
                line_kws={"alpha": 1}, label=col)
    

plt.legend(loc='best', markerscale=5)
plt.ylim(0, 1)
plt.xlim(0, 1)
plt.show()

结果是一个透明度与默认值相同的图形,显示的不同颜色的数量是默认值的两倍。线条与阴影不同。

3df52oht

3df52oht1#

要在ci中设置/更改regplot阴影的透明度,您可以使用plt.setp(ax.collections[x], alpha=0.x)。由于没有数据,我使用了seaborn tips table。collections[0]用于列中的第一项,collections ['1]用于最后一项...为了展示这一点,我使用了alpha=0.1和0.9。希望这就是您正在寻找的...

df=sns.load_dataset('tips')
columns = [ 
"total_bill",
"size"
]

fig, ax = plt.subplots()

for col in columns:
    # Removed kws here
    sns.regplot(data=df, x=col, y='tip', scatter=False, ci = 95, label=col)
    
## Using collections
plt.setp(ax.collections[0], alpha=0.1) ## For total_bill
plt.setp(ax.collections[1], alpha=0.9) ## For size

plt.legend(loc='best', markerscale=5)
#plt.ylim(0, 1) ## Not valid for my data
#plt.xlim(0, 1) ## Not valid for my data
plt.show()

相关问题