matplotlib 去除所有子图的记号标签

nkkqxpd9  于 2023-05-07  发布在  其他
关注(0)|答案(5)|浏览(147)

在Matplotlib中创建子图数组时,有没有一种方法可以完全摆脱tick标签?我目前需要根据图所对应的较大数据集的行和列来指定每个图。我尝试过使用ax.set_xticks([])和类似的y轴命令,但没有成功。
我知道,这可能是一个不寻常的要求,希望作出一个没有轴数据的图,但这就是我所需要的。我需要它自动应用于数组中的所有子图。

gjmwrych

gjmwrych1#

你有正确的方法。也许您没有将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([])

这给出:

请注意,每个轴示例都存储在一个列表(axes)中,因此可以轻松地对其进行操作。像往常一样,有几种方法可以做到这一点,这只是一个例子。

qltillow

qltillow2#

甚至比@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=[]);

注意:必须在调用plt.show()之前调用此函数

yizd12fk

yizd12fk3#

子图的命令相同

fig = plt.figure()

ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)

ax1.plot([1,2])

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)
)

plt.draw()

htrmnn0y

htrmnn0y4#

您可以通过简单地运行以下代码来摆脱默认的子图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()后面添加上述两行,即可删除默认刻度。

jjjwad0x

jjjwad0x5#

可以通过以下方式删除xtick或ytick

ax.get_xaxis().set_visible(False)
ax.get_yaxis().set_visible(False)

如果你也想关闭脊椎,所以根本没有轴,你可以用途:

ax.spines['bottom'].set_visible(False)       
ax.spines['left'].set_visible(False)

如果你想一次关闭所有的东西,用途:

ax.axis("off")

相关问题