У меня есть интерактивный график (есть ползунки для всех параметров) , но я хочу только рассчитать и нарисовать график там, где он виден. Я совершенно не знаком с matplotlib / pyplot, поэтому был бы очень признателен за помощь.
Вот код, используемый для инициализации графика:
#creating the figure and embedding it into tkinter
fig = Figure(figsize=(5, 4), dpi=100)
self.sp = fig.add_subplot(111)
self.sp.set_xlim(-30, 100)
self.canvas = FigureCanvasTkAgg(fig, master=self.window)
self.canvas.draw()
self.canvas.get_tk_widget().pack(side=t.TOP, fill=t.BOTH, expand=1)
А вот код, который dr aws обновляет график (рисуются 3 разные функции):
def UpdateSimulation(self, x):
self.sp.clear()
vals = ([],[])
valsN = ([], [])
valsT= ([],[])
for t in np.arange(-30, 100, 0.3):
vals[0].append(t)
vals[1].append(CPMW.MF_TotalPulse(self.tauN.get(),
self.tauIn.get(),
self.tauT.get(),
t + self.t0.get(),
self.t0.get(),
self.An.get(),
self.At.get()))
valsN[0].append(t)
valsN[1].append(CPMW.MF_NonThermalComponent(t + self.t0.get(), self.An.get(), self.tauN.get(), self.tauIn.get(), self.t0.get()))
valsT[0].append(t)
valsT[1].append(CPMW.MF_ThermalComponent(t + self.t0.get(), self.At.get(), self.tauT.get(), self.tauN.get(), self.t0.get()))
self.sp.plot(vals[0], vals[1], "r-")
self.sp.plot(valsN[0], valsN[1], "b-")
self.sp.plot(valsT[0], valsT[1], "g-")
self.canvas.draw()
Теперь, когда пользователь панорамирует изображение графика позже, он будет видеть только функции между x = -30
и x = 100
.
Мой вопрос: могу ли я каким-то образом получить наименьшее и наибольшее значение x, видимое пользователю?
Я пробовал axis.get_xlim()
, но каким-то образом пределы не менялись, и отображался только график в диапазоне от x = 0.3
до x = 0.4