我同意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])
結果/前後:
但願不會有哪個我忘了什麼驚喜重寫,但是無論如何,這在實際應用中會很快變得清晰。
爲什麼它很醜? 你可以將它隱藏在一個函數'remove_numbers = lambda ax:[x.axis('off')for ax.ravel()]' – tacaswell
@Daniel對我的答案有任何反饋?它有幫助嗎?我應該刪除它嗎? –