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 вы можете посмотреть на текущий буфер данных и масштабировать оси соответственно.