Как программно настроить вид в matplolib FigureCanvas? - PullRequest
0 голосов
/ 29 мая 2020
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
from matplotlib.figure import Figure
from PyQt5 import QtCore
from PyQt5 import QtWidgets

class MyFigure(QtCore.QObject):
    def __init__(self):
        self.widget = QtWidgets.QWidget()
        self.fig = Figure()
        self.canvas = FigureCanvas(self.fig)
        self.canvas.setParent(self.widget)
        self.axis = self.fig.add_subplot(111)
        self.toolbar = NavigationToolbar(self.canvas, self.widget)

    def plot(self, x, y):
        self.axis.plot(x, y)
        self.canvas.draw()

    def set_view(self, xmin, xmax, ymin, ymax):
        # how can I do that?


С NavigationToolbar я могу использовать pan и zoom , чтобы интерактивно настроить вид на конкретную область графика в FigureCanvas.

Как можно Я программно установил представление FigureCanvas в область (xmin, xmax, ymin, ymax)?

Ответы [ 2 ]

1 голос
/ 29 мая 2020

Вы можете изменить пределы просмотра, используя matplotlib.pyplot.xlim или matplotlib.axes.Axes.set_xlim . Например:

def set_view(self, xmin, xmax, ymin, ymax):
    self.axis.set_xlim(xmin, xmax)
    self.axis.set_ylim(ymin, ymax)

Однако я не знаю, как это взаимодействует с FigureCanvas. Просто проверьте это.

0 голосов
/ 01 июня 2020

Кажется, это помогает:

def set_view(self, xmin, xmax, ymin, ymax):
    if self.toolbar._nav_stack() is None:
        # otherwise the zoomed view will be the first in the stack
        self.toolbar.push_current()
    # Call the _set_view method of the "Axes" instance
    self.axis._set_view((xlo, xhi, ylo, yhi))
    self.toolbar.draw()
    # add the new view to the navigation stack:
    self.toolbar.push_current()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...