我目前正在努力开发一个程序,允许用户以色彩图的形式显示数据集,并通过使用滑块,它还允许用户调整色彩映射的阈值,从而更新相应的色彩映射。最好的描述是通过使用图片:
此图像显示颜色条应如何显示(左侧图像)和之后(右侧图像)调整。随着colrobar的阈值发生变化,色彩图将相应更新。
现在我主要使用matplotlib,我发现matplotlib确实支持一些小部件,比如滑块。然而,我需要帮助的区域是设计一段代码,当调整滑块时,它将更新颜色条和色彩图(如上图所示)。我想知道是否有人之前已经这样做了,并且可能有一段他们愿意分享的代码,可能会指出如何实现这一目标。
答案 0 :(得分:1)
这应该可以让你获得80%的胜利:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, Button
ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.25)
img_data = np.random.rand(50,50)
c_min = 0
c_max = 1
img = ax.imshow(img_data, interpolation='nearest')
cb = plt.colorbar(img)
axcolor = 'lightgoldenrodyellow'
ax_cmin = plt.axes([0.25, 0.1, 0.65, 0.03])
ax_cmax = plt.axes([0.25, 0.15, 0.65, 0.03])
s_cmin = Slider(ax_cmin, 'min', 0, 1, valinit=c_min)
s_cmax = Slider(ax_cmax, 'max', 0, 1, valinit=c_max)
def update(val, s=None):
_cmin = s_cmin.val
_cmax = s_cmax.val
img.set_clim([_cmin, _cmax])
plt.draw()
s_cmin.on_changed(update)
s_cmax.on_changed(update)
resetax = plt.axes([0.8, 0.025, 0.1, 0.04])
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')
def reset(event):
s_cmin.reset()
s_cmax.reset()
button.on_clicked(reset)
plt.show()
这是official demo的最低版本。