首页 > 解决方案 > 如何从 pyplot 浮动轴中删除框架?

问题描述

我想知道如何从floating_axesin 中删除框架matplotlib我正在按照此处画廊中的setup_axes1功能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)
    return ax1, aux_ax

我已经尝试了以下常用方法的变体来删除ax1或上的框架aux_ax,但它们都不起作用。

# 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)

任何帮助或建议表示赞赏!

标签: pythonmatplotlibsubplotaxes

解决方案


玩了一会儿,我发现轴存储在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)

推荐阅读