【问题标题】:Clipping axes with patch用补丁剪裁轴
【发布时间】:2019-05-23 06:26:20
【问题描述】:

我在理解如何用补丁剪辑轴时遇到了一些麻烦。我想让蓝色矩形位于轴的背景中。但是我的剪辑调用什么也没做。

import matplotlib.pyplot as plt
from matplotlib import patches
import numpy as np

fig = plt.figure()

X, Y = np.mgrid[-1:1:.1, -1:1:.1]
Z = X+Y

ax1 = fig.add_subplot(111)
ax1.contourf(X, Y, Z)

frame = patches.Rectangle(
        (-.1,-.1), 1.2, 1.2, transform=ax1.transAxes, alpha=.5, fc='b', fill=True, linewidth=3, color='k'
    )
ax1.set_clip_path(frame) # has no effect
fig.patches.append(frame)

fig.show()

我需要如何正确设置?文档非常缺乏。

【问题讨论】:

    标签: python matplotlib clipping


    【解决方案1】:

    您需要做的就是提供zorder 以将其放入后台。具体来说,zorder=0 在本例中用于您的 Rectangle 补丁。

    zorder 视为决定将什么堆叠在什么之上的参数。 zorder=0 只会发送堆栈中最低的补丁,这意味着绘图的最后一层。

    frame = patches.Rectangle(
            (-.1,-.1), 1.2, 1.2, transform=ax1.transAxes, alpha=.5, fc='b', fill=True, linewidth=3, color='k'
        , zorder=0) # <--- zorder specified here
    ax1.set_clip_path(frame) # has no effect
    fig.patches.append(frame)
    

    【讨论】:

    • @lotolmencre:坦率地说,我不知道set_clip_path,所以很遗憾我无法回答这个问题。但是现在你提到了它,我会读到它。文档几乎不存在
    • @lotolmencre:顺便问一下,你为什么希望补丁应用在剧情后面?原则上,它的用途主要是裁剪一个绘图区域。您正在使用它来获得独特的彩色背景,这也可以使用框架颜色来实现。
    • 这是一个退化的例子。我希望该框框出多个轴对象。
    猜你喜欢
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    相关资源
    最近更新 更多