如何从pyplot浮动轴中删除框架?

How to remove frame from pyplot floating axis?

我想知道如何在 matplotlib 中删除 floating_axes 的框架。 I am following the setup_axes1 function from the matplotlib gallery here to rotate a plot.

代码贴在下面。

def setup_axes1(fig, rect):
    """
    A simple one.
    """
    tr = Affine2D().scale(2, 1).rotate_deg(30)
    grid_helper = floating_axes.GridHelperCurveLinear(
        tr, extremes=(-0.5, 3.5, 0, 4),
        grid_locator1=MaxNLocator(nbins=4),
        grid_locator2=MaxNLocator(nbins=4))
    ax1 = floating_axes.FloatingSubplot(fig, rect, grid_helper=grid_helper)
    fig.add_subplot(ax1)
    aux_ax = ax1.get_aux_axes(tr)
    return ax1, aux_ax

我尝试了以下常用方法的变体来删除 ax1aux_ax 上的框架,但其中 none 有效。

# before adding subplot
for a in ax1.spines:
    ax1.spines[a].set_visible(False)

# when adding subplot
fig.add_subplot(ax1, frameon=False)

# after adding subplot
plt.axis('off')
plt.tick_params(labelcolor='none', top=False, bottom=False, left=False, right=False)

感谢任何帮助或建议!

玩了一会儿后,我发现坐标轴存储在 ax1.axis 对象中。将 set_visible(False) 应用于它的每个元素会生成 matplotlib 文档中显示的没有轴的图形(也没有刻度)。

def setup_axes1(fig, rect):
    """
    A simple one.
    """
    tr = Affine2D().scale(2, 1).rotate_deg(30)

    grid_helper = floating_axes.GridHelperCurveLinear(
        tr, extremes=(-0.5, 3.5, 0, 4),
        grid_locator1=MaxNLocator(nbins=4),
        grid_locator2=MaxNLocator(nbins=4))

    ax1 = floating_axes.FloatingSubplot(fig, rect, grid_helper=grid_helper)

    fig.add_subplot(ax1)

    aux_ax = ax1.get_aux_axes(tr)

    for key in ax1.axis:
        ax1.axis[key].set_visible(False)
        
    return ax1, aux_ax

如果你想保留刻度,你可以进一步使用存储在 ax1.axis 中的对象。例如,以下替换仅删除刺,但保留刻度线和刻度线标签。

ax1.axis[key].line.set_visible(False)