python - 关闭图形的所有子图的轴

标签 python matplotlib

我正在创建大量子图,我想关闭所有子图的轴。
目前我正在通过

fig, ax = plt.subplots(7, len(clusters))
fig.subplots_adjust(wspace=0, top=1.0, bottom=0.5, left=0, right=1.0)

for x in ax.ravel():
    x.axis("off")

但是循环遍历子图以单独转动轴是丑陋的。
有没有办法告诉subplots在创建时转动 od 轴
Figure 上的一些设置或 pyplot全局关闭轴。pyplot.axis('off')仅在最后一个子图上关闭轴。

最佳答案

我同意 with @tcaswell你可能应该只使用你已经在使用的东西。将其用作函数的另一种选择是使用 numpy.vectorize() :

import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(7, len(clusters))
np.vectorize(lambda ax:ax.axis('off'))(ax)

或者,如果您需要多次调用它,通过分配 vectorize d 函数到一个变量:
axoff_fun = np.vectorize(lambda ax:ax.axis('off'))
# ... stuff here ...
fig, ax = plt.subplots(7, len(clusters))
axoff_fun(ax)

再次注意,这与@tcaswell 建议的相同,在更高级的设置中(可能只是更慢)。它本质上与您现在使用的东西相同。

但是,如果你坚持要另一种方式(即你是一种特殊的懒惰),你可以设置 matplotlib.rcParams 一次,然后每个后续轴将自动为 off .可能有一种更简单的方法来模拟 axis('off') ,但这是我成功的方式:
import matplotlib as mpl

# before
mpl.pyplot.figure()
mpl.pyplot.plot([1,3,5],[4,6,5])

# kill axis in rcParams
mpl.rc('axes.spines',top=False,bottom=False,left=False,right=False);
mpl.rc('axes',facecolor=(1,1,1,0),edgecolor=(1,1,1,0));
mpl.rc(('xtick','ytick'),color=(1,1,1,0));

# after
mpl.pyplot.figure()
mpl.pyplot.plot([1,3,5],[4,6,5])

之前/之后的结果:

before rcparams after rcparams

希望没有任何我忘记覆盖的意外,但无论如何在实际应用程序中都会很快变得清晰。

关于python - 关闭图形的所有子图的轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838099/

相关文章:

python - 无法理解排序()键参数内的 lambda 函数

python - 如何使用 Windows Django 远程访问服务器

Python PyCharm 公仔包! plt.figure\plot 在 Debug模式下停止工作,但在 Python 控制台上工作

python - 在 Python 3 CGI 中使用 matplotlib

python-2.7 - Matplotlib 缩放后的图形大小和位置

python - pyqt5标签可见性不隐藏的问题

python - 是否可以以不切断角的方式在 python 中使用 OpenCV 轮廓?

python - Pandas 根据条件将一列映射到另一列

python - 如何从文件中绘制多条垂直线?

python - matplotlib.image.NonUniformImage 在 pdf 导出期间超出绘图区域