首页 > 解决方案 > Matplotlib:不可能同时关闭轴和设置 facecolor?

问题描述

有人可以解释为什么这个简单的代码在关闭轴时不会执行 facecolor 命令吗?

fig = plt.figure(1)
ax = fig.add_subplot(211, facecolor=(0,0,0), aspect='equal')
ax.scatter(np.random.random(10000), np.random.random(10000), c="gray", s=0.25)
ax.axes.set_axis_off()

提前致谢!

标签: pythonmatplotlib

解决方案


背景补丁是轴的一部分。因此,如果轴被关闭,背景补丁也会被关闭。

一些选项:

重新添加背景补丁

ax = fig.add_subplot(211, facecolor=(0,0,0), aspect='equal')
ax.set_axis_off()
ax.add_artist(ax.patch)
ax.patch.set_zorder(-1)

创建新补丁

ax = fig.add_subplot(211, facecolor=(0,0,0), aspect='equal')
ax.set_axis_off()
ax.add_patch(plt.Rectangle((0,0), 1, 1, facecolor=(0,0,0),
                           transform=ax.transAxes, zorder=-1))

使轴刺和刻度不可见

...但保持轴打开。

ax = fig.add_subplot(211, facecolor=(0,0,0), aspect='equal')
for spine in ax.spines.values():
    spine.set_visible(False)
ax.tick_params(bottom=False, labelbottom=False,
               left=False, labelleft=False)

推荐阅读