Найти - Пользователи
Полная версия: Matplotlib перерисовка объектов на графике
Начало » Python для новичков » Matplotlib перерисовка объектов на графике
1 2
Vad
Использую 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()
Jython
Vad

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

http://www.scipy.org/PyLab

http://www.scipy.org/Plotting_Tutorial
Jython
Хотя и это может не помочь.
Jython
Вот кое что нашёл http://forum.hs.dp.ua/forums/archive/index.php/t-4549.html
igor.kaist
Стас, причем здесь последняя ссылка вообще? Ты суть вопроса понял? Если нет, то зачем что то писать вообще?
Vad
Согласен частично с igor….
мне нужен совет людей которые использовали matplolib и могут дать конкретные реализации динамической перерисовки графиков…
В примерах на библиотеку есть анимированная синусоида…не могу разобратся как мне переложить этот пример на полярную систему …..чтобы когда уже есть figure обновлять на ней данные…..
Jython
Я конечно писал на pylab. Но такой задачи себе не ставил.

Если хочешь могу показать тебе примерчик
Vad
Можно посмотреть….
Меня интересует как перерисовать график в уже открытом окне figure
AleXanrd
День добрый, на днях я делал похожую задачу, правда не в полярных координатах, если интересно можете глянуть.(код конечно не идеален, критика принимается)
# -*- 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 секунд. Есть проблема, которая состоит в том, что после перетаскивания окна в котором рисуется график, перерисовка прекращается, висит что ли, как это победить?
Vad
Да с линией тоже разобрался в примере хорошо работает
А именно в полярных координатах не знаю как поменять текущие значение на новое…
какой то аналог функции нужен set_ydata() или наподобие этого…
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