如何使用 Python 中的 matplotlib 使条形图的一部分透明以取消隐藏其下方的填充区域?
How to make part of a bar plot transparent to unhide the filled region beneath it using matplotlib in Python?
我有一个 pandas 数据框 df
如下所示:
CSP Min Max
A 107.0 111.0
B 126.0 156.0
df.to_dict()
如下:
{'Min': {'A': 107.0, 'B': 126.0}, 'Max': {'A': 111.0, 'B': 156.0}}
我想通过隐藏 0 和 Min 之间的部分并只显示 Min 和 Max 之间的部分来绘制 A 和 B 的条形图。因此,我选择将 Min 着色为白色。代码如下所示:
fig, ax = plt.subplots(figsize = (12, 8))
df.plot(kind = "bar",
stacked = True, color = ["white", "orange"],
ax = ax)
plt.legend([])
结果如图所示:
我还想绘制一个介于 55 和 148 之间的彩色范围。因此我使用了 plt.fill_between()
来达到这个目的。
fig, ax = plt.subplots(figsize = (12, 8))
ax.fill_between(x = [-1, 2],
y1 = [55, 55],
y2 = [148, 148],
color = "gray",
alpha = 0.15,
)
plt.legend([])
看起来如下:
现在我想将这两个组合成一个图。我使用了以下代码:
fig, ax = plt.subplots(figsize = (12, 8))
df.plot(kind = "bar",
stacked = True, color = ["white", "orange"],
ax = ax)
ax.fill_between(x = [-1, 2],
y1 = [55, 55],
y2 = [148, 148],
color = "gray",
alpha = 0.15,
)
plt.legend([])
结果图如图所示:
问题是白色条重叠了本不应重叠的灰色区域。那么,如何使条形图的底部透明,以便其下方的灰色区域仍然可见?
您可以使用 df['Min']
:
和 bottom
选项一起绘制(无堆栈)df['Max']
df['Max'].plot(kind = "bar",
color="orange",
ax = ax,
bottom=df['Min'])
我有一个 pandas 数据框 df
如下所示:
CSP Min Max
A 107.0 111.0
B 126.0 156.0
df.to_dict()
如下:
{'Min': {'A': 107.0, 'B': 126.0}, 'Max': {'A': 111.0, 'B': 156.0}}
我想通过隐藏 0 和 Min 之间的部分并只显示 Min 和 Max 之间的部分来绘制 A 和 B 的条形图。因此,我选择将 Min 着色为白色。代码如下所示:
fig, ax = plt.subplots(figsize = (12, 8))
df.plot(kind = "bar",
stacked = True, color = ["white", "orange"],
ax = ax)
plt.legend([])
结果如图所示:
我还想绘制一个介于 55 和 148 之间的彩色范围。因此我使用了 plt.fill_between()
来达到这个目的。
fig, ax = plt.subplots(figsize = (12, 8))
ax.fill_between(x = [-1, 2],
y1 = [55, 55],
y2 = [148, 148],
color = "gray",
alpha = 0.15,
)
plt.legend([])
看起来如下:
现在我想将这两个组合成一个图。我使用了以下代码:
fig, ax = plt.subplots(figsize = (12, 8))
df.plot(kind = "bar",
stacked = True, color = ["white", "orange"],
ax = ax)
ax.fill_between(x = [-1, 2],
y1 = [55, 55],
y2 = [148, 148],
color = "gray",
alpha = 0.15,
)
plt.legend([])
结果图如图所示:
问题是白色条重叠了本不应重叠的灰色区域。那么,如何使条形图的底部透明,以便其下方的灰色区域仍然可见?
您可以使用 df['Min']
:
bottom
选项一起绘制(无堆栈)df['Max']
df['Max'].plot(kind = "bar",
color="orange",
ax = ax,
bottom=df['Min'])