61

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

  • Error: User Rate Limit Exceeded

    от mishaF
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededadd_subplot()Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от mishaF
  • Error: User Rate Limit Exceeded

    от mishaF
  • Error: User Rate Limit Exceeded

    от mishaF
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • на вторую мысль - такая лучше подойдет, что я переключился ....

    от mishaF
  • 2

    Также возможно скрыть подзаговор

    используя метод 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)
    

  • 1

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

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

  • 21

    much улучшенный

    интерфейс подзаговора был добавлен в 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

  • 96

    Вы всегда можете спрятать топоры

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

    import matplotlib.pyplot as plt
    
    hf, ha = plt.subplots(3,2)
    ha[-1, -1].axis('off')
    
    plt.show()
    

    и результаты на следующем рисунке:

    enter image description here

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