Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2009 21:02:51

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Использую matplotlib для построения графиков в полярной системе координат. Нужно отобразить спутники навигационные на небосводе, по двух параметрам высота над горизонтом и азимут.
Требуется раз в секунду перерисовывать две точки на круге (в полярной системе)
Как это можно реализовать? Как то в функции которая срабатывает по таймеру нада поменять координаты точек и перерисовать график?

import time
import numpy as np
import matplotlib
import sys
matplotlib.use('WXAgg') # do this before importing pylab

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111,polar=True,axisbg='#d5de9c')
r = (45,60)
degree = (95,180)
theta = ((degree*np.pi/180.0),(degree*np.pi/180.0))
ax.set_title(“View”, fontsize=20)
line = ax.plot(theta, r, ‘bo’, markersize=15)
ax.set_rmax(90.0)

#
def update_line(event):
#нужно вставить как мне кажется новые координаты угол и радиус в полярной системе
fig.canvas.draw()
print ‘Hello’

import wx
id = wx.NewId()
actor = fig.canvas.manager.frame
timer = wx.Timer(actor, id=id)
timer.Start(100)
wx.EVT_TIMER(actor, id, update_line)
plt.show()



Офлайн

#2 Апрель 3, 2009 22:23:26

Jython
От:
Зарегистрирован: 2009-03-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Vad

Ты поставил конкретную задачу. Я думаю эти ссылки тебе помогут

http://www.scipy.org/PyLab

http://www.scipy.org/Plotting_Tutorial



Офлайн

#3 Апрель 3, 2009 22:24:52

Jython
От:
Зарегистрирован: 2009-03-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Хотя и это может не помочь.



Офлайн

#4 Апрель 3, 2009 22:39:24

Jython
От:
Зарегистрирован: 2009-03-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Офлайн

#5 Апрель 4, 2009 14:05:08

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Стас, причем здесь последняя ссылка вообще? Ты суть вопроса понял? Если нет, то зачем что то писать вообще?



Офлайн

#6 Апрель 4, 2009 18:36:31

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Согласен частично с igor….
мне нужен совет людей которые использовали matplolib и могут дать конкретные реализации динамической перерисовки графиков…
В примерах на библиотеку есть анимированная синусоида…не могу разобратся как мне переложить этот пример на полярную систему …..чтобы когда уже есть figure обновлять на ней данные…..



Отредактировано (Апрель 4, 2009 18:37:18)

Офлайн

#7 Апрель 4, 2009 19:05:35

Jython
От:
Зарегистрирован: 2009-03-25
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Я конечно писал на pylab. Но такой задачи себе не ставил.

Если хочешь могу показать тебе примерчик



Отредактировано (Апрель 4, 2009 19:05:52)

Офлайн

#8 Апрель 6, 2009 09:00:57

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Можно посмотреть….
Меня интересует как перерисовать график в уже открытом окне figure



Офлайн

#9 Апрель 11, 2009 10:57:25

AleXanrd
От:
Зарегистрирован: 2008-04-05
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

День добрый, на днях я делал похожую задачу, правда не в полярных координатах, если интересно можете глянуть.(код конечно не идеален, критика принимается)

# -*- coding: cp1251 -*-
import pylab
import os, time


def open_file():
try:
f = open( 'meteo_kks.txt', 'r')
f_r = f.readlines()
f.close()
except:
pass
return f_r



def date_plot(f, n, a):
'''f - f_r,
n - number sting'''

#print a
i = a[0]
a.remove(i)
f = f[n][:-1]
f = f.replace(',','.')
a.append(float(f))
return a

def x_up(a):
'''f - f_r,
n - number sting'''

i = a[0]
a.remove(i)
j = len(a)
x = a[j-1] + 1
a.append(x)
return a

def zapolnenie(n):
s = []
for i in range(n):
s.append(0.0)
return s

t = []
p = []
w = []
x = []
pylab.ion()
while 1:

#pylab.ion()

#print 'zzz'
f_r = open_file()


if t == []:
t = zapolnenie(50)
if p == []:
p = zapolnenie(50)
if w == []:
w = zapolnenie(50)
if x == []:
x = range(50)
fig = pylab.figure(0,)
#fig.clear()


ax1 = pylab.subplot(3,1,1)#h,l,pos
t = date_plot(f_r, 3, t)
x = x_up(x)

line, = pylab.plot(x, t, '-r')
line.set_ydata(t)
pylab.grid(True)

ax2 = pylab.subplot(3,1,2)#h,l,pos
#ax2.set_ylim(700, 800)

p = date_plot(f_r, 4, p)

line, = ax2.plot(x, p, '-g')
line.set_ydata(p)
pylab.grid(True)

ax3 = pylab.subplot(3,1,3)#h,l,pos
w = date_plot(f_r, 5, w)

line, = pylab.plot(x, w, '-b')
line.set_ydata(w)
pylab.grid(True)
pylab.draw()
time.sleep(1)
данные беруться из файла в котором следующее содержание:

Дата(декр.время) / Температура(гр.Цельсия) / Давление(мм рт.ст.) / Относ. влажность(%)

11.04.2009 10:49:20
4,75
732,10
89,00

данные меняються раз в 10 секунд. Есть проблема, которая состоит в том, что после перетаскивания окна в котором рисуется график, перерисовка прекращается, висит что ли, как это победить?



Офлайн

#10 Апрель 13, 2009 14:54:10

Vad
От:
Зарегистрирован: 2008-08-28
Сообщения: 94
Репутация: +  0  -
Профиль   Отправить e-mail  

Matplotlib перерисовка объектов на графике

Да с линией тоже разобрался в примере хорошо работает
А именно в полярных координатах не знаю как поменять текущие значение на новое…
какой то аналог функции нужен set_ydata() или наподобие этого…



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version