2015-09-16 2 views
0

Я пытаюсь сделать следующее:Автоматизировать заселение сюжетных с различными данными

import matplotlib.pyplot as plt 
import numpy as np 
#data 
x = np.linspace(0, 2 * np.pi, 400) 
y1 = np.sin(x) 
y2 = np.sin(x**2) 
y3 = np.cos(x**2) 
#plot  
f, (ax1, ax2, ax3) = plt.subplots(3, sharex=True, sharey=True) 
ax1.plot(x, y1) 
ax1.set_title('lalalala') 
ax2.plot(x, y2) 
ax3.plot(x, y3) 
f.subplots_adjust(hspace=0) 
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False) 

Вместо ввода ax1 к ах3 и y1 к y3 вручную, мне было интересно, есть ли способ цикла по ax и y для заполнения сюжета. Я знаю об этом post, но лучший ответ, который дается там, не перекрывает данные. Благодаря!

ответ

1

Конечно, просто поставить в список все, что вы хотите, и добавить подзаговоры в цикле:

import matplotlib.pyplot as plt 
import numpy as np 
#data 
x = np.linspace(0, 2 * np.pi, 400) 

y = [np.sin(x), np.sin(x**2), np.cos(x**2)] 
title = ['y1','y2','y3'] 

#plot  
numPlots = len(y) 
f = plt.figure() 
ax = [] 
for i in range(numPlots): 
    ax.append(f.add_subplot(numPlots,1,i+1)) 
    ax[i].plot(x, y[i]) 
    ax[i].set_title(title[i]) 
    f.subplots_adjust(hspace=0.3) 
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False) 
plt.show() 

Subplots created in a loop

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