Форум сайта python.su
0
Здравствуйте!
Нашёл пример анимации диффузии 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)
Офлайн
0
Если хотите действительно интерактивных и быстрых графиков, с удобными элементами управления - советую уйти от matplotlib к chaco. Matplotlib хорош для статики (да и вобще тормоз).
Офлайн
0
Спасибо, посмотрю.
А по поводу паузы по команде пользователя не подскажете? Желательно кроссплатформенное решение.
Ещё вспомнилось - хотелось бы одновременно рисовать два графика - собственно моделируемую систему и график зависимости нескольких величин от времени. Такого тоже пока что в примерах не встречал.
Офлайн
0
Ставите ETS отсюда
http://pythonxy.googlecode.com/files/EnthoughtToolSuite-3.6.0_py26.exe
Здесь будут примеры c:\Python26\Doc\EnthoughtToolSuite\Chaco\examples\demo.py
Обедающий философда хоть десять графиков.. в моих программах как правило больше 2х отображается. Причем добавляю-убираю графики в скрипте “на ходу” от выделения строк в таблице.
Ещё вспомнилось - хотелось бы одновременно рисовать два графика - собственно моделируемую систему и график зависимости нескольких величин от времени. Такого тоже пока что в примерах не встречал.
Офлайн
0
Читаю официальный вроде как туториал. 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()
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
Отредактировано (Май 27, 2011 19:18:37)
Офлайн
0
Ценой титанических усилий было установлено, что примеры находятся в /usr/share/doc/python-chaco/examples, а примеры из настоящего туториала находятся в /usr/share/doc/python-chaco/examples/tutorials/scipy2008. И они действительно претерпели изменения. Вопщем, пока что продолжаю борьбу.
Офлайн
0
Я то под виндой весь ETS скопом ставлю - вместе с traits и т.п. Потому проблем нет, всё работает. Не знаю как оно там в убунту, я в него редко заглядываю…
Офлайн
0
Ну я так понял, что там всё было установлено, просто за три года иерархия модулей несколько поменялась. В тех примерах, что идут с пакетом, всё вроде правильно.
Офлайн
0
Таки сподобился изучить туториал. Усвоил, как делать по несколько графиков, но не нашёл, как можно рассчитывать какой-то длительный процесс и в реальном времени выводить его на график. И как его прерывать, чтобы можно было вводить команды в командной строке и снова возобновлять. И в примерах http://github.enthought.com/chaco/user_manual/annotated_examples.html#examples тоже такого не нашёл.
Офлайн