Как я могу построить четыре участка с разными кольспанами? - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь подогнать четыре изображения, используя matplotlib.pyplot, как показано ниже:

| plot1 | plot2|
|    plot3     |
|    plot4     |

Большинство примеров, которые я нашел, охватывают три графика, подобные этим:

ax1 = plt.subplot(221)
ax2 = plt.subplot(222)
ax3 = plt.subplot(212)

И это графики трехстроит планы успешно (однако я не понимаю, как это делается для ax3).Теперь я хочу добавить сюжет 4 к этой договоренности.Что бы я ни пытался, у меня ничего не получалось.

Не могли бы вы мне подсказать, как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Вы можете использовать subplot2grid .Это действительно удобно.

В документах написано

Создать подзаговор в сетке.Сетка задается формой, в месте расположения loc, охватывая размах строк, colspan ячеек в каждом направлении.Индекс для loc основан на 0.

Сначала вы определяете размер в терминах количества строк и столбцов (3,2) здесь.Затем вы определяете начальную позицию (строка, столбец) для конкретного подплана.Затем вы назначаете количество строк / столбцов, охватываемых этим конкретным субплотом.Ключевые слова для интервалов строк и столбцов: rowspan и colspan соответственно.

import matplotlib.pyplot as plt

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

enter image description here

0 голосов
/ 30 декабря 2018

Целое число, которое вы указываете на подзаговор, фактически состоит из 3 частей:

  • первая цифра: количество строк
  • вторая цифра: количество столбцов
  • третья цифра: index

Таким образом, для каждого вызова вспомогательных участков мы указываем, как должна быть разделена область графика (с использованием строк и столбцов), а затем на какую область поместить график (с использованием индекса), см. изображения ниже.

ax1 = plt.subplot(321)  # 3 rows, 2 cols, index 1: col 1 on row 1
ax2 = plt.subplot(322)  # 3 rows, 2 cols, index 2: col 2 on row 1
ax3 = plt.subplot(312)  # 3 rows, 1 cols, index 2: col 1 on row 2
ax4 = plt.subplot(313)  # 3 rows, 1 cols, index 3: col 1 on row 3

Из документов :

Либо 3-значное целое число, либо три отдельных целых числа, описывающих положение подзаговора.Если три целых числа - это nrows, ncols и index по порядку, то субплот займет позицию индекса в сетке со столбцами nrows и столбцами ncols.Индекс начинается с 1 в верхнем левом углу и увеличивается вправо.

pos - трехзначное целое число, где первая цифра - это число строк, вторая - число столбцов, а третья - индексподзаговора.то есть fig.add_subplot (235) аналогичен fig.add_subplot (2, 3, 5).Обратите внимание, что для работы этой формы все целые числа должны быть меньше 10.

321 312

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...