【问题标题】:Python: Matplotlib Patches and Contour PlotsPython:Matplotlib 补丁和等高线图
【发布时间】:2012-11-23 15:17:47
【问题描述】:

在使用 PatchCollection 时,有没有办法让圆的填充变得透明?我绘制了一个圆圈,并尝试将 facecolor 设置为“无”,但它覆盖了绘制在其顶部的等高线图。我想看到圆的轮廓,其后面的轮廓仍然可见。

立体网是使用 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)

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    我解决了这个问题,但感谢任何可能正在调查此问题的人。

    解决办法:

        p = PatchCollection(patches, match_original = True)
    

    这样可以在形状后面看到轮廓。

    【讨论】:

    • 我正要回应。我的评论是,如果您只绘制 1 个圆圈,请避免使用整个 PatchColection 并直接添加:ax.add_artist(circle)
    • 不错。我将建议使用ax.add_patch(circle) 工作正常(如果你只有一个补丁,则无需使用 PatchCollection)。不过,您确实应该在您的问题中提供一个最小的工作示例。
    • 仅供参考,您也可以在创建PatchCollection 时指定facecolor='none'(或使用p.set_facecolor)。制作集合时默认值与原始补丁不匹配的原因是,集合通常用于加速绘制一组几乎相同的艺术家或将某些属性(例如 facecolor)映射到另一个标量(例如,@ color 987654327@)。 (另一方面,我什至不知道存在match_original 选项。这很方便!)正如其他人所提到的,对于单个圆圈,直接添加它更容易。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2019-11-11
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多