Matplotlib Subplots - Избавьтесь от ярлыков Tick
Есть ли способ избавиться от тиковых меток вообще при создании массива подзадач в Matplotlib? В настоящее время мне нужно указать каждый график на основе строки и столбца большего набора данных, которому соответствует график. Я попытался использовать ax.set_xticks ([]) и аналогичную команду оси y, но безрезультатно.
Я понимаю, что это, вероятно, необычный запрос на то, чтобы сделать сюжет без каких-либо данных о оси, но это то, что мне нужно. И мне нужно, чтобы он автоматически применялся ко всем подсети в массиве.
Ответы
Ответ 1
У вас есть правильный метод. Возможно, вы не применяете 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
), а затем их можно легко манипулировать. Как обычно, есть несколько способов сделать это, это просто пример.
Ответ 2
Команды одинаковы для подзаговоров
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]()
Ответ 3
Даже более краткий ответ, чем @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=[]);