Найти - Пользователи
Полная версия: Matplotlib & Spyder
Начало » Python для новичков » Matplotlib & Spyder
1
fongostev
Добрый день.
Я работаю в Spyder и часто строю какие-то графики через matplotlib. В связи с необходимостью запуска программы не из IDE, а из командной строки, возникла проблема: тот алгоритм, что строит графики в Spyder, в командной строке просто не работает, то есть программа выполняется, но графики matplotlib не строит.

Что делать?
asv13
а что пишет то? вы бы ошибку привели или пример
show() используете? в spyder вроде режим ion() включен по умолчанию, может его добавить надо в скрипт который через командную запускаете?
fongostev
x.plot(T, B)
x.grid(True)
y.plot(T, A)
y.grid(True)
z.plot(range(len(D)), D) 
plt.grid(True)
plt.show()
Ошибки никакой на выходе нет, иначе я бы знал примерно, в какую сторону копать, а так ничего. Спасибо за подсказку, но включение ion() ничего не дал, как не запускалось, так и не запускается.
asv13
что за объекты x y z? честно не понял пример, как-то усложненно выглядит и 3-d я обычно не так строил. я со спайдером не особо знаком, может там свои способы.
fongostev
x, y, z - объекты типа
pylab.subplot()
То есть это три независимых графика на одной форме plot. В принципе в спайдере те же алгоритмы, так как остальной код там пишется на ура
asv13
Набросал пример, стараясь быть ближе к оригиналу (я бы конечно сделал по другому). Всё работает без ошибок. Может у вас данные какие или еще что чего не видно в куске приведенного кода.

from pylab import *
T=[1,2,3]
B=T
A=T
D=T
x = plt.subplot(311)
x.plot(T, B)
x.grid(True)
y=plt.subplot(312)
y.plot(T, A)
y.grid(True)
z=plt.subplot(313)
z.plot(range(len(D)), D) 
plt.grid(True)
plt.show()
fongostev
asv13
Набросал пример, стараясь быть ближе к оригиналу (я бы конечно сделал по другому). Всё работает без ошибок. Может у вас данные какие или еще что чего не видно в куске приведенного кода.

from pylab import *
T=[1,2,3]
B=T
A=T
D=T
x = plt.subplot(311)
x.plot(T, B)
x.grid(True)
y=plt.subplot(312)
y.plot(T, A)
y.grid(True)
z=plt.subplot(313)
z.plot(range(len(D)), D) 
plt.grid(True)
plt.show()
Видимо, что-то именно с моей машиной. Этот код тоже не работает из баша. Скажите пожалуйста, как бы Вы это реализовали?
asv13
Например так.
from pylab import *
T=[1,2,3]
B=A=D=T
for i, y in ((1,A), (2,B), (3,D)):
	subplot(3,1,i)
	plot(T, y)
	grid(True)
show()

Но дело не в стиле. Пробуйте упрощать - строить один график, или не использовать subplot (grid) - надо же узнать что вызывает ошибку. Про bash ничего не знаю, у меня винда.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB