我同意@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)
如果需要多次调用它,则可以将vectorized
函数赋值给一个变量:
axoff_fun = np.vectorize(lambda ax:ax.axis('off'))
# ... stuff here ...
fig, ax = plt.subplots(7, len(clusters))
axoff_fun(ax)
请注意,这与@tcaswell建议的是相同的事情,只是在更华丽的设置下(可能更慢)。而且它本质上与您现在使用的相同。
然而,如果您坚持以其他方式进行操作(即您是一种特殊的懒惰),您可以设置matplotlib.rcParams
一次,然后每个随后的轴将自动关闭。也许有更简单的方法来模拟axis('off')
,但是这是我成功的方法:
import matplotlib as mpl
mpl.pyplot.figure()
mpl.pyplot.plot([1,3,5],[4,6,5])
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));
mpl.pyplot.figure()
mpl.pyplot.plot([1,3,5],[4,6,5])
结果前/后:
![rcparams之前](https://istack.dev59.com/eSOP1m.webp)
![rcparams之后](https://istack.dev59.com/lYSZ1m.webp)
希望没有遗漏需要覆盖的地方,但在实际应用中很快会变得明显。
remove_numbers = lambda ax: [x.axis('off') for x in ax.ravel()]
。 - tacaswell