LINUX.ORG.RU
ФорумTalks

Автоматически обновляемые графики из питона

 , визуализация данных


0

4

Ковыряю свои данные при помощи scipy/numpy, рисую картинки matplotlib'ом. Иногда жутко хочется сделать вот так:

  1. Открываем интерпретатор в интерактивном режиме
  2. Задаём переменные для данных.
  3. Задаём графики для этих перемеменных.
  4. Запускаем «показать картинку», любуемся.
  5. Не убирая картинку, в интерпретаторе меняем значение переменной с данными.
  6. Любуемся на автоматически обновившийся график

Очень ли странного мне хочется? А может, для этого уже есть готовые инструменты под питон?

★★★★★

Последнее исправление: Axon (всего исправлений: 2)

Matplotlib вроде предоставляет возможность писать свои бэкенды. А еще IPython есть, может в нем есть нужная фича.

Deleted
()
Ответ на: комментарий от Deleted

Matplotlib вроде предоставляет возможность писать свои бэкенды.

Воу, воу, палехче! for i in list: print (i) - мой потолок в программировании.

Axon ★★★★★
() автор топика
Ответ на: комментарий от abraziv_whiskey

А само никак? И где брать формочку?

Axon ★★★★★
() автор топика

Вроде должен уметь. Там у axis должно быть поле XData или что-то такое. В матлабе есть. Днем попробую разобраться тоже.

maggotroot
()
Ответ на: комментарий от der_looser

Оно же не обновляет график при изменении переменной, по которой он построен. Вот чего я хочу, чтобы понятнее было:

import numpy as np
import pylab
def f(x):
    #Какая-то функция
data = np.genfromtxt(onen('data.csv', 'rb'), delimiter='\t')
xdata, ydata = data[:,0], data[:,1]
pylab.ion()
pylab.figure()                #Появляется окошко
pylab.plot(xdata, ydata)      #В окошке рисуется график
ydata = [f(x) for x in ydata] #В этот момент график автоматически обновляется
Если бы перерисовку графика можно было, хотя бы, вызвать вручную, это тоже было бы Ok.

Axon ★★★★★
() автор топика
Последнее исправление: Axon (всего исправлений: 2)

ipython в режиме notebook. Для обновления нажать Shift-Enter, есть каке-то сочетание и для пересчёта всего листа.

Deleted
()
Ответ на: комментарий от hope13

Вот ещё что нашёл:

from pylab import *
import matplotlib.pyplot as plt
import numpy

def update(val):
    A = sA.val
    B = sB.val
    C = sC.val
    y_data = A*x_data*x_data + B*x_data + C
    par_plot.set_ydata(y_data)
    draw()

x_data = numpy.arange(-100,100,0.1);

fig = plt.figure(figsize=plt.figaspect(0.75))
ax = fig.add_subplot(1, 1, 1)
subplots_adjust(top=0.8)

ax.set_xlim(-100, 100);
ax.set_ylim(-100, 100);
ax.set_xlabel('X')
ax.set_ylabel('Y')

axsliderA = axes([0.12, 0.85, 0.16, 0.075])
sA = Slider(axsliderA, 'A', -1, 1.0, valinit=0.5)
sA.on_changed(update)

axsliderB = axes([0.43, 0.85, 0.16, 0.075])
sB = Slider(axsliderB, 'B', -30, 30.0, valinit=2)
sB.on_changed(update)

axsliderC = axes([0.74, 0.85, 0.16, 0.075])
sC = Slider(axsliderC, 'C', -30, 30.0, valinit=1)
sC.on_changed(update)

axes(ax)
A = 1;
B = 2;
C = 1;
y_data = A*x_data*x_data + B*x_data + C;

par_plot, = plot(x_data,y_data, lw=2, color='red')

show()
hope13 ★★★
()
Ответ на: комментарий от Axon

значит pylab.plot()

Я точно уже не помню:) Давно анимацию графика делал. Погугли «анимированные графики python»

der_looser ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.