Я пытаюсь использовать ползунок, чтобы изменить пределы для масштабирования цвета, используя функцию set_clim (min, max). Я хочу, чтобы два ползунка управляли значениями для минимальных и максимальных значений, а после того, как они изменились, фигура будет заменена.Использование ползунка для изменения переменной и replot Matplotlib figure
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.widgets import Slider, Button
x=np.linspace(0,100,100)
y=np.linspace(0,100,100)
z=np.zeros((100,100))
for i in range (0,100):
for j in range (0,100):
z[i,j]=np.random.random()
fig, ax = plt.subplots()
plt.subplots_adjust(left=0.25, bottom=0.25)
l=plt.contourf(x,y,z)
axmax = plt.axes([0.25, 0.1, 0.65, 0.03])
axmin = plt.axes([0.25, 0.15, 0.65, 0.03])
smax = Slider(axmax, 'Max', 0, 1.0, valinit=1)
smin = Slider(axmin, 'Min', 0, 1.0, valinit=0)
def update(val):
fig.set_clim(smin.val,smax.val)
fig.canvas.draw_idle()
smax.on_changed(update)
smin.on_changed(update)
plt.show()
Приведенный выше код дает мне «AttributeError: объект„AxesSubPlot“не имеет атрибута„set_clim“», когда я двигаю ползунки, хотя он показывает мне первоначальный неизменный показатель. Это мой первый раз, когда я использовал виджеты в python (и более или менее первый раз использовал python), поэтому вполне могут быть некоторые фундаментальные недоразумения.
+1 к использованию 'size' arg, чтобы избавиться от этих циклов –