2015-05-24 3 views
2

Как вы получаете matplotlib для отображения более 3 сюжетов на том же рисунке? Например, у меня есть:Matplotlib более 3 строк на тех же осях

plt.figure(1) 
th=np.linspace(0,pi,num=200) 
y=range(10) 
for i in range(10): 
    alph=np.exp(i/2) 
    y[i]=((np.cos(alph*np.cos(th)) - np.cos(alph))/np.sin(th))**2 
    figure(1) 
    plt.plot(th/pi,y[i]) 
plt.show() 

Но я не могу получить фигуру, чтобы отобразить более чем на 3 линии сразу.

ответ

0

Ваш код отлично работает для меня, когда я закомментируйте #figure линия (1)

import numpy as np 
import pylab as plt 
from math import * 
plt.figure() 
th=np.linspace(0,np.pi,num=200) 
y=range(10) 
for i in range(10): 
    alph=np.exp(i/2) 
    y[i]=((np.cos(alph*np.cos(th)) - np.cos(alph))/np.sin(th))**2 
    plt.plot(th/pi,y[i], label = 'Line %d' %i) 
plt.legend(loc =2)  
plt.show() 
+0

Woops жаль, что это работает, я просто не мог видеть более 3 сюжетов, потому что их полномочия были слишком низкими –

1

Это должно работать, в противном случае проверьте версию Matplotlib (это работает с 1.4.3)

import matplotlib.pyplot as plt 
import numpy as np 
from math import * 

plt.figure(1) 
th=np.linspace(0,pi,num=200) 
y=range(10) 
plots_y = [] 
for i in range(10): 
    alph=np.exp(i/2) 
    y[i]=((np.cos(alph*np.cos(th)) - 1. * np.cos(alph))/np.sin(th))**2 
    plots_y.append(y[i]) 

for plot in plots_y: 
    plt.plot(1. * th/pi, plot) 
plt.show()