Matplotlib 的堆栈图改变重叠区域的颜色

问题描述 投票:0回答:1

当我使用 Matplotlib 的

stackplot
绘制堆积面积图时,如果一组
y
值中有一个负数,那么该区域将与下面的区域重叠。例如:

import matplotlib.pyplot as plt
plt.stackplot([1,2,3], [1,2,3], [1,0,-1])
plt.show()

您可以看到顶部的一组

y
值是橙色的。由于最右边的
y
值是
-1
,它与蓝色区域重叠。这对我来说很好。除了,我需要明确它是一个重叠,而不是蓝色区域只是停留在
y=2.0
x=2.0
x=3.0
和橙色区域是积极的。像这样的重叠可以设置成不同的颜色吗?

matplotlib stacked-chart stacked-area-chart area-chart
1个回答
0
投票

这样的重叠可以设置成不同的颜色吗?

是的,你可以在两次运行中绘制第二个 y 数据:

import matplotlib.pyplot as plt
import numpy as np

y1 = [1,2,3]
y2 = [1,0,-1]
polys = plt.stackplot([1,2,3], y1, np.maximum(y2, 0), np.minimum(y2, 0))

然而,我认为更好的解决方案是使颜色半透明,也许还有额外的影线:

polys = plt.stackplot([1,2,3], [1,2,3], [1,0,-1], alpha=0.3)
for poly, hatch in zip(polys, ['|', '-']):
    poly.set_hatch(hatch)
    poly.set_edgecolor(poly.get_facecolor())

© www.soinside.com 2019 - 2024. All rights reserved.