Уведомления

Группа в Telegram: @pythonsu

#1 Май 25, 2011 19:45:09

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Здравствуйте!

Нашёл пример анимации диффузии http://www.timteatro.net/2010/10/29/performance-python-solving-the-2d-diffusion-equation-with-numpy/ (последний большой блок кода) . Он всем хорош, кроме одного - когда рисование заканчивается, ничего нельзя сделать из командной строки, не закрыв сначала график, а после закрытия графика у меня не получилось снова вернуть его к жизни. А хотелось бы, чтобы можно было, скажем, изменить параметры и снова запустить. Так, как сделано здесь http://jenyay.net/Matplotlib/Ion - удовлетворяет этому требованию, но работает в десятки раз медленнее. Также хотелось бы, чтобы можно было штатно приостановить симуляцию по сигналу с клавиатуры, то бишь чтобы можно было ввести несколько команд и продолжить её заново (насколько я понял, оба приведённых примера этого не могут).

Как мне добиться желаемого?

Заранее благодарен.



Отредактировано (Май 25, 2011 19:48:59)

Офлайн

#2 Май 26, 2011 07:58:43

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Если хотите действительно интерактивных и быстрых графиков, с удобными элементами управления - советую уйти от matplotlib к chaco. Matplotlib хорош для статики (да и вобще тормоз).



Офлайн

#3 Май 26, 2011 19:37:48

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Спасибо, посмотрю.

А по поводу паузы по команде пользователя не подскажете? Желательно кроссплатформенное решение.

Ещё вспомнилось - хотелось бы одновременно рисовать два графика - собственно моделируемую систему и график зависимости нескольких величин от времени. Такого тоже пока что в примерах не встречал.



Офлайн

#4 Май 26, 2011 20:38:56

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Ставите ETS отсюда
http://pythonxy.googlecode.com/files/EnthoughtToolSuite-3.6.0_py26.exe

Здесь будут примеры c:\Python26\Doc\EnthoughtToolSuite\Chaco\examples\demo.py

Обедающий философ
Ещё вспомнилось - хотелось бы одновременно рисовать два графика - собственно моделируемую систему и график зависимости нескольких величин от времени. Такого тоже пока что в примерах не встречал.
да хоть десять графиков.. в моих программах как правило больше 2х отображается. Причем добавляю-убираю графики в скрипте “на ходу” от выделения строк в таблице.

В chaco есть контейнер ArrayPlotData, в котором если данные обновляются - то за перерисовкой графиков, которые используют эти данные, следить уже не надо, все происходит автоматом.



Офлайн

#5 Май 27, 2011 19:15:39

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Читаю официальный вроде как туториал. http://github.enthought.com/chaco/user_manual/tutorial_1.html Первый пример прошёл на ура. Ввожу второй приведённый там пример

from traits.api import HasTraits, Instance
from traitsui.api import View, Item
from chaco.api import Plot, ArrayPlotData
from enable.component_editor import ComponentEditor
from numpy import linspace, sin

class LinePlot(HasTraits):
plot = Instance(Plot)
traits_view = View(
Item('plot',editor=ComponentEditor(), show_label=False),
width=500, height=500, resizable=True, title="Chaco Plot")

def __init__(self):
super(LinePlot, self).__init__()
x = linspace(-14, 14, 100)
y = sin(x) * x**3
plotdata = ArrayPlotData(x=x, y=y)
plot = Plot(plotdata)
plot.plot(("x", "y"), type="line", color="blue")
plot.title = "sin(x) * x^3"
self.plot = plot

if __name__ == "__main__":
LinePlot().configure_traits()
и оказывается, что нет никаких traits.api, traitsui.api, View, Item, chaco.api, enable.component_editor, сеанс же поиска в интернете показал, что есть enthought.traits.api, enthought.traits.ui, view, item, enthought.chaco.api, enthought.enable.api. Причём, судя по всему, второй список вовсе не служит адекватной заменой первому, ибо после оной замены питон мне нарисовал, что

TypeError                                 Traceback (most recent call last)

/media/3f16c67b-5e31-48bf-85c2-65bfd35e49f3/250gb/dima/alife/python/chaco_example.py in <module>()
22 from numpy import linspace, sin
23
---> 24 class LinePlot(HasTraits):
25 plot = Instance(Plot)
26 traits_view = view(

/media/3f16c67b-5e31-48bf-85c2-65bfd35e49f3/250gb/dima/alife/python/chaco_example.py in LinePlot()
25 plot = Instance(Plot)
26 traits_view = view(
---> 27 item('plot',editor=ComponentEditor(), show_label=False),
28 width=500, height=500, resizable=True, title="Chaco Plot")
29

TypeError: 'module' object is not callable
. Что я делаю не так? Система ubuntu 11.04.



Отредактировано (Май 27, 2011 19:18:37)

Офлайн

#6 Май 27, 2011 20:46:01

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Ценой титанических усилий было установлено, что примеры находятся в /usr/share/doc/python-chaco/examples, а примеры из настоящего туториала находятся в /usr/share/doc/python-chaco/examples/tutorials/scipy2008. И они действительно претерпели изменения. Вопщем, пока что продолжаю борьбу.



Офлайн

#7 Май 28, 2011 19:07:02

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Я то под виндой весь ETS скопом ставлю - вместе с traits и т.п. Потому проблем нет, всё работает. Не знаю как оно там в убунту, я в него редко заглядываю…



Офлайн

#8 Май 29, 2011 00:08:06

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Ну я так понял, что там всё было установлено, просто за три года иерархия модулей несколько поменялась. В тех примерах, что идут с пакетом, всё вроде правильно.



Офлайн

#9 Июнь 5, 2011 20:52:10

Обедающий философ
От:
Зарегистрирован: 2011-05-06
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Анимированное рисование в pylab

Таки сподобился изучить туториал. Усвоил, как делать по несколько графиков, но не нашёл, как можно рассчитывать какой-то длительный процесс и в реальном времени выводить его на график. И как его прерывать, чтобы можно было вводить команды в командной строке и снова возобновлять. И в примерах http://github.enthought.com/chaco/user_manual/annotated_examples.html#examples тоже такого не нашёл.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version