在使用PatchCollection时,有没有办法使圆的填充透明?我画了一个圆,尝试将facecolor设置为“none”,但它覆盖了它所在的等高线图。我希望能看到圆的轮廓,并保留其后面的等高线可见。
该立体网是使用第三方软件mplstereonet-0.2绘制的。以下是绘制图像的脚本部分:
hold(True)
fig, ax = plt.subplots(subplot_kw = dict(projection = 'stereonet')) # Schmidt by default
cax = ax.density_contourf(strike, dip, measurement = 'poles')
ax.pole(strike, dip, 'k^', markersize = 3)
ax.grid(True)
patches = []
circle = Circle((0, 0), 0.5, facecolor = 'none', fill = False)
patches.append(circle)
p = PatchCollection(patches)
ax.add_collection(p)
cbar = fig.colorbar(cax, cmap = cm)
cbar.set_clim(0, 25)
ax.add_artist(circle)
- Rutger Kassiesax.add_patch(circle)
,这个方法很好用(如果你只有一个 patch 的话就不需要使用 PatchCollection)。不过,你应该在问题中提供一个最小工作示例。 - jorgecaPatchCollection
时也可以指定facecolor='none'
(或使用p.set_facecolor
)。之所以默认情况下制作集合时未匹配原始补丁的颜色,是因为集合通常用于加速绘制一堆几乎相同的艺术家,或将某些属性(如面颜色)映射到另一个标量(例如按z
颜色)。 (另一方面,我甚至不知道“match_original”选项的存在。真方便!)正如其他人提到的,对于单个圆形,直接添加它就更容易了。祝你好运! - Joe Kington