【问题标题】:Matplotlib Slider Widget and changing colorbar thresholdMatplotlib 滑块小部件和更改颜色条阈值
【发布时间】:2015-10-06 20:22:26
【问题描述】:

我目前正在尝试开发一个程序,该程序允许用户以颜色图的形式显示他们的数据集,并通过使用滑块,它还允许用户调整颜色图的阈值,从而更新相应的颜色图。最好用一张图片来描述这一点:

此图显示了颜色条在调整之前(左图)和调整之后(右图)的外观。随着颜色条的阈值发生变化,颜色图也会相应更新。

现在我主要使用 matplotlib,我发现 matplotlib 确实支持一些小部件,例如滑块。但是,我需要帮助的领域是设计一段代码,该代码将在调整滑块时更新颜色条和颜色图(如上图所示的方式)。我想知道是否有人以前这样做过,并且可能有一段他们愿意分享的代码,并且可能有关于如何实现这一点的指针。

【问题讨论】:

  • 你有任何(部分)工作代码吗?你看过slider demo吗?
  • 你解决了吗?

标签: python-2.7 widget matplotlib slider


【解决方案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 的最小编辑版本。

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多