Matplotlib Blit, как изменить Xaxis и Yaxis

Я использую wxpython а также matplotlib нарисовать фигуру. Данные взяты из fpga, и мне нужно обновить данные, когда они появятся. В моем коде я использую метод matplotlib restore_region.blit, чтобы рисовать быстрее, но иногда я хочу изменить метки и метки xticks, чтобы увидеть детали рисунка, но я не знаю, как это сделать. Я только что получил следующий результат:

установить весь масштаб:установить весь масштаб

После смены галочек и меток:сменить галочки и метки

Следующее - моя функция для установки xticks и yticks.

def setSpLabel(self, begin_X=70, end_X=5995,begin_Y=-120,end_Y=60): 
    self.ylabel('dBm')
    self.xlabel('MHz')
    self.ylim(begin_Y,end_Y)
    self.xlim(begin_X,end_X)
    yticks=linspace(begin_Y,end_Y,15)
    yticklabels = [str(int(i)) for i in yticks]  
    xticks=linspace(begin_X,end_X,15)

    xticklabels = [str(int(i)) for i in xticks]
    self.axes.set_xticks(xticks)
    self.axes.set_xticklabels(xticklabels,rotation=0)
    self.axes.set_yticks(yticks)
    self.axes.set_yticklabels(yticklabels,rotation=0)
    self.axes.grid(True)

    self.axes.get_xaxis().set_animated(True)
    self.axes.get_yaxis().set_animated(True)
    self.FigureCanvas.draw()
    self.axes.get_xaxis().set_animated(False)
    self.axes.get_yaxis().set_animated(False)

    self.axes.draw_artist(self.axes.get_xaxis())
    self.axes.draw_artist(self.axes.get_yaxis())
    self.FigureCanvas.blit(self.axes.bbox)
    self.background=self.FigureCanvas.copy_from_bbox(self.axes.bbox)

Как я могу изменить галочки и метки, и в то же время обновить данные графика?

1 ответ

Как насчет планирования метода автоматического масштабирования каждые 1 с или около того? Вы можете использовать wx.Timer для этого.

self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.setSpLabel, self.timer)        
self.timer.Start(1000) # every 1000 ms

А в setSpLabel вы можете посмотреть на текущий буфер данных и масштабировать оси соответственно.

Другие вопросы по тегам