Matplotlib子图 - 完全摆脱勾选标签

时间:2014-08-04 17:18:35

标签: matplotlib axis-labels subplot

在Matplotlib中创建子图数组时,有没有办法完全摆脱刻度标签?我目前需要根据绘图对应的较大数据集的行和列来指定每个绘图。我试图使用ax.set_xticks([])和类似的y轴命令,但没有用。

我认识到,想要制作没有轴数据的情节可能是一个不寻常的要求,但这就是我所需要的。我需要它自动应用于数组中的所有子图。

4 个答案:

答案 0 :(得分:17)

你有正确的方法。也许你没有将set_xticks应用到正确的轴上。

一个例子:

import matplotlib.pyplot as plt
import numpy as np

ncols = 5
nrows = 3

# create the plots
fig = plt.figure()
axes = [ fig.add_subplot(nrows, ncols, r * ncols + c) for r in range(0, nrows) for c in range(0, ncols) ]

# add some data
for ax in axes:
    ax.plot(np.random.random(10), np.random.random(10), '.')

# remove the x and y ticks
for ax in axes:
    ax.set_xticks([])
    ax.set_yticks([])

这给出了:

enter image description here

请注意,每个轴实例都存储在列表(axes)中,然后可以轻松操作它们。像往常一样,有几种方法可以做到这一点,这只是一个例子。

答案 1 :(得分:10)

子图

的命令相同
In [1]: fig = plt.figure()

In [2]: ax1 = fig.add_subplot(211)

In [3]: ax2 = fig.add_subplot(212)

In [4]: ax1.plot([1,2])
Out[4]: [<matplotlib.lines.Line2D at 0x10ce9e410>]

In [5]: ax1.tick_params(
   ....:     axis='x',          # changes apply to the x-axis
   ....:     which='both',      # both major and minor ticks are affected
   ....:     bottom='off',      # ticks along the bottom edge are off
   ....:     top='off',         # ticks along the top edge are off
   ....:     labelbottom='off') # labels along the bottom edge are off)

In [6]: plt.draw()

enter image description here

答案 2 :(得分:4)

比@DrV的答案更简洁,重新混合@mwaskom的注释,完整而完整的单行代码以摆脱所有子图中的所有轴:

# do some plotting...
plt.subplot(121),plt.imshow(image1)
plt.subplot(122),plt.imshow(image2)
# ....

# one liner to remove *all axes in all subplots*
plt.setp(plt.gcf().get_axes(), xticks=[], yticks=[]);

答案 3 :(得分:0)

只需运行以下代码,即可摆脱默认的子图x和y刻度:

fig, ax = plt.subplots()
ax.xaxis.set_major_locator(plt.NullLocator())
ax.yaxis.set_major_locator(plt.NullLocator())
for i in range(3):
    ax = fig.add_subplot(3, 1, i+1)
    ...

只需在fig, ax = plt.subplots()之后添加上述两行,即可删除默认刻度。