Подтвердить что ты не робот

Как я могу сделать пустой подзаговор в matplotlib?

Я делаю группу subplot (скажем, 3 x 2) в matplotlib, но у меня меньше 6 наборов данных. Как я могу сделать оставшийся подзаголовок пустым?

Расположение выглядит следующим образом:

+----+----+
| 0,0| 0,1|
+----+----+
| 1,0| 1,1|
+----+----+
| 2,0| 2,1|
+----+----+

Это может продолжаться для нескольких страниц, но на последней странице есть, например, 5 наборов данных в поле 2,1 будет пустым. Однако, я объявил цифру как:

cfig,ax = plt.subplots(3,2)

Итак, в пространстве для подзаголовка 2,1 есть набор осей по умолчанию с тиками и метками. Как я могу программно отобразить это пространство пустым и лишенным осей?

4b9b3361

Ответ 1

Вы всегда можете скрыть оси, которые вам не нужны. Например, следующие коды кодов 6-й оси полностью:

import matplotlib.pyplot as plt

hf, ha = plt.subplots(3,2)
ha[-1, -1].axis('off')

plt.show()

и приводит к следующему рисунку:

enter image description here

В качестве альтернативы см. принятый ответ на вопрос Скрытие текста оси на графиках matplotlib для способа сохранения осей, но скрывающих все украшения осей (например, метки и метки).

Ответ 2

В matplotlib добавлен значительно улучшенный интерфейс подзаголовка, поскольку этот вопрос был впервые задан. Здесь вы можете создать точно нужные вам сюжеты, не скрывая дополнительных функций. Кроме того, подзаголовки могут охватывать дополнительные строки или столбцы.

import pylab as plt

ax1 = plt.subplot2grid((3,2),(0, 0))
ax2 = plt.subplot2grid((3,2),(0, 1))
ax3 = plt.subplot2grid((3,2),(1, 0))
ax4 = plt.subplot2grid((3,2),(1, 1))
ax5 = plt.subplot2grid((3,2),(2, 0))

plt.show()

enter image description here

Ответ 3

Можно ли создать подзаголовки, когда они вам понадобятся?

import matplotlib
matplotlib.use("pdf")
import matplotlib.pyplot as plt

plt.figure()
plt.gcf().add_subplot(421)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(422)
plt.fill([0,0,1,1],[0,1,1,0])
plt.gcf().add_subplot(423)
plt.fill([0,0,1,1],[0,1,1,0])
plt.suptitle("Figure Title")
plt.gcf().subplots_adjust(hspace=0.5,wspace=0.5)
plt.savefig("outfig")

Ответ 4

Также возможно скрыть подзаголовок с помощью метода Axes.set_visible().

import matplotlib.pyplot as plt
import pandas as pd

fig = plt.figure()
data = pd.read_csv('sampledata.csv')

for i in range(0,6):
ax = fig.add_subplot(3,2,i+1)
ax.plot(range(1,6), data[i])
if i == 5:
    ax.set_visible(False)