如何在Matplotlib中设置补丁(patch)的边缘颜色(edgecolor)和填充颜色(facecolor)的不同透明度?

22

我正在尝试绘制一组不同方向和大小的三角形。内部重叠的形状是我想要的,也就是最暗的区域。 但是当我在mpatches.RegularPolygon中设置不透明度(alpha)时,边缘也变得透明了。 我该怎么解决这个问题? 谢谢!

1个回答

36

你或许需要发布一些代码来更清晰地表达你的意思,但从我理解的情况来看,你可以单独设置facecoloredgecolor,分别作为(R,G,B,alpha)元组,并将edgecoloralpha设为1,以使其不透明,如果这正是你想要的。例如:

import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

fig = plt.figure()
ax = fig.add_subplot(111, aspect='equal')

triangle1 = Polygon(((0.05,0.1), (0.396,0.1), (0.223, 0.38)),
                    fc=(1,0,0,0.5), ec=(0,0,0,1), lw=2)
triangle2 = Polygon(((0.2,0.2), (0.5,0.4), (0.3, 0.6)),
                    fc=(1,0,0,0.5), ec=(0,0,0,1), lw=2)

ax.add_artist(triangle1)
ax.add_artist(triangle2)

plt.show()

输入图像描述


我的代码包含许多统计和函数,这使得问题不够清晰。下次我会发布一些代码:)) - smirkymonkey
1
如果有人在使用补丁时遇到了边缘颜色和填充颜色透明度不起作用的问题,请确保补丁没有设置“整体”透明度。如果设置了,那么该值将被使用,并且面颜色的RGBA中的A部分将不会被尊重。可以使用patch.set_alpha(None)取消“整体”透明度。 - SpinUp __ A Davis
13
作为额外的提示,如果想要使用命名颜色,技巧在于to_rgba函数,它可以允许执行类似fc=to_rgba('red', 0.5)的操作。 - jaumebonet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接