2014-11-28 2 views
1

Можно ли автоматически генерировать несколько подзадач в matplotlib? Примером процесса, который я хочу, чтобы автоматизировать это:Возможно ли автоматическое создание нескольких подзадач в matplotlib?

import matplotlib.pyplot as plt 
figure = plt.figure() 
ax1 = figure.add_subplot(2, 3, 1) 
ax2 = figure.add_subplot(2, 3, 2) 
ax3 = figure.add_subplot(2, 3, 3) 
ax4 = figure.add_subplot(2, 3, 4) 
ax5 = figure.add_subplot(2, 3, 5) 
ax6 = figure.add_subplot(2, 3, 6) 

В подзаговоры нужны уникальные имена, так как это позволит мне делать такие вещи, как:

for ax in [ax1, ax2, ax3, ax4, ax5, ax6]: 
    ax.set_title("example") 

Большое спасибо.

Дополнение: Существуют ли какие-либо функции, которые автоматизируют генерацию нескольких подзаговоров? Что, если мне нужно повторить вышеупомянутый процесс 100 раз? Должен ли я печатать каждый ax1 до ax100?

+0

, автоматически генерировать, что вы имеете в виду? Не могли бы Вы уточнить? – ThePredator

+0

, чтобы сгенерировать вышеупомянутые 6 подзаголовков, я считаю, что вы можете только свести к минимуму код, добавив больше циклов 'for' для вашего оставшегося названия, легенды и т. Д. – ThePredator

ответ

5

Вы можете использовать:

fig, axs = plt.subplots(2,3) 

AXS будет массив, содержащий делянок.

Или распаковать массив мгновенно:

fig, ((ax1, ax2, ax3), (ax4, ax5, ax6)) = plt.subplots(2,3) 
+0

Отлично! Спасибо –

+2

Если второй вариант должен быть fig, ([ax1, ax2, ax3], [ax4, ax5, ax6]) = plt.subplots (2,3) или что-то подобное, так как axs - массив 2x3? –

+0

Вы правы, я изменил его. –

Смежные вопросы