Matplotlib стирает строки после установки ограничений x / y - PullRequest
1 голос
/ 13 июля 2020

Я делаю приложение для построения графиков, которое должно через tkinter gui позволять пользователю создавать графики для построения спектральных данных и изменять графики.

Я пытаюсь сделать это так пользователь может изменить пределы осей x и y после того, как данные были построены. Просматривая документы mpl, кажется, что очевидным решением является использование методов set_xlim и set_ylim. Однако, если эти методы вызываются после того, как линия построена, линия больше не будет видна, и промежуточные отметки оси отсутствуют. Через другие мои виджеты я знаю, что строки все еще содержатся в атрибуте lines объекта оси, они просто не видны.

Мой вопрос: есть ли способ «установить» оси после того, как линия была построена, так что данные будут адаптироваться к ней, то есть быть видимыми после настройки осей, и иметь отметки, как это было до настройки? Я покажу изображения графика, чтобы проиллюстрировать мою ситуацию. Определения классов довольно длинные, поэтому я просто покажу использование set_xlim и set_ylim

График до изменения пределов оси: The plot before changing the axis limits The plot after changing the x limits: Сюжет после изменения пределов x

if all(entry.get() for entry in {self.lxlimEntry, self.rxlimEntry}):
            self.master.controller.get_plots()[self.plotVar.get()].axes[0].set_xlim(self.lxlimEntry.get(), self.rxlimEntry.get())

        if all(entry.get() for entry in {self.lylimEntry, self.rylimEntry}):
            self.master.controller.get_plots()[self.plotVar.get()].axes[0].set_ylim(self.lylimEntry.get(), self.rylimEntry.get())

Виджеты Entry содержатся в Toplevel, созданном страницей приложения (master), а Entries - это то место, где пользователь вводит новые пределы x и y. controller - это серверная часть приложения.

...