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


Я делаю группу подзаголовков (скажем, 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 есть набор осей по умолчанию с тиками и ценник. Как я могу программно сделать это пространство пустым и лишенным осей?

4 55

4 ответа:

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

import matplotlib.pyplot as plt

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

plt.show()

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

enter image description here

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

A много улучшение сюжетные интерфейс был добавлен в 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

кроме того, возможно, чтобы скрыть делянке, используя топоры.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)

можно ли создавать подзаголовки, когда они вам нужны?

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