首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Matplotlib中的堆叠区域图中创建透明区域

在Matplotlib中的堆叠区域图中创建透明区域
EN

Stack Overflow用户
提问于 2022-08-10 17:05:13
回答 1查看 115关注 0票数 1

我正在尝试构建这种类型的图表:使用Matplotlib和seaborn在线条图和堆叠区域图之间的混合。我只想让下面的白色区域完全透明。我试图更改alpha参数,但它并不使区域透明,充其量只能是白色。我使用以下代码:

代码语言:javascript
运行
复制
plt.plot(df.index,"5y Avg",data=df,
         color=avg_color,
         linestyle="dotted",
         label= '5y Avg')

plt.stackplot(df.index,df["5Y Max"],color="#B1B3B6",labels= ['5y Range'])
    
plt.stackplot(df_test.index,df["5Y Min"],color="white",alpha=1)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-10 19:35:19

您可以通过更改问题的处理方法来获得所需的效果:与其使底部堆栈图的区域变得透明,您只可以用对图中的部分进行着色。

代码语言:javascript
运行
复制
ax.fill_between(x = df.index, y1 = df['5Y Min'], y2 = df['5Y Max'], color = '#B1B3B6', label = '5y Range')

完整代码

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd


df = pd.DataFrame()
df['index'] = np.arange(1, 53 + 1, 1)
df['5y Avg'] = 2000/53*df['index'] + 100*np.random.rand(len(df))
df['5Y Max'] = 3200/53*df['index'] + 100*np.random.rand(len(df))
df['5Y Min'] = 1000/53*df['index'] + 100*np.random.rand(len(df))

avg_color = '#45A1A2'
df = df.set_index('index')


plt.style.use('seaborn-whitegrid')
fig, ax = plt.subplots()

ax.plot(df.index, df['5y Avg'],
        color = avg_color,
        linestyle = 'dotted',
        label = '5y Avg')

ax.fill_between(x = df.index, y1 = df['5Y Min'], y2 = df['5Y Max'], color = '#B1B3B6', label = '5y Range')

ax.legend(frameon = True)

plt.show()

绘图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73310193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档