Matplotlib:共享轴上的不同刻度标签

时间:2016-01-12 10:57:07

标签: python matplotlib

使用import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import AxesGrid fig = plt.figure() grid = AxesGrid(fig, 111, nrows_ncols=(2, 2), share_all=True) #grid[-1].set_xticks([0.2, 0.4, 0.6, 0.8, 1.0]) # This applies to *all* axes plt.show() 创建具有共享轴的紧密间隔的子图。这导致轴相交的刻度标签重叠(图A)。为了避免这种重叠,我想删除右下轴的第一个刻度。但是,轴是共享的,因此第一个刻度标签也会在其他轴上被删除(图B)。

有没有办法在共享轴上显示不同的刻度标签?

(x,y)

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以从网格获取轴手柄,该网格只是一个包含ax=grid[3]的列表,然后使用xticks = ax.xaxis.get_major_ticks()xticks[1].label1.set_visible(False)。作为一个最小的例子,

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid
import numpy as np
from matplotlib.cbook import get_sample_data

#Setup figure/grid
fig = plt.figure()
grid = AxesGrid(fig, 111, nrows_ncols = (2, 2), share_all=True)

#Plot some data
f = get_sample_data("axes_grid/bivariate_normal.npy", asfileobj=False)
Z = np.load(f)
for i in range(4):
    im = grid[i].imshow(Z)

#Set tick one of axis 3 in grid to off
ax = grid[3]
xticks = ax.xaxis.get_major_ticks()
xticks[1].label1.set_visible(False)
plt.draw()
plt.show()