You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让滑块有效调整两张imshow叠加图的第二层透明度?

滑块调整叠加imshow图像透明度的解决方案

你的代码问题在于,img1.set_data(y)只是重置了图像数据,并没有更新透明度属性。要实现滑块调节第二层图像透明度,只需在更新函数中直接修改图像的alpha参数即可:

import numpy as np, matplotlib.pyplot as plt, matplotlib.widgets as mpwidgets

OPACITY = 0.5

x = np.random.random((100, 50))
y = np.linspace(0, 0.1, 100*50).reshape((100, 50))

# PLOT
fig, (ax0, ax1) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [5, 1]})
img0 = ax0.imshow(x, cmap="jet")
img1 = ax0.imshow(y, cmap="jet", alpha=OPACITY)

def update(value): 
    # 直接更新图像的透明度参数
    img1.set_alpha(value)
    fig.canvas.draw_idle()

slider0 = mpwidgets.Slider(ax=ax1, label='opacity', valmin=0, valmax=1, valinit=OPACITY)
slider0.on_changed(update)

plt.show()

修改说明

  • 移除了全局变量OPACITY的不必要赋值(如果不需要在其他逻辑中调用该变量,可直接删除)
  • 核心修改是用img1.set_alpha(value)替代img1.set_data(y),直接更新第二层图像的透明度属性
  • 调用fig.canvas.draw_idle()触发画布重绘,让透明度变化实时生效

内容的提问来源于stack exchange,提问作者Basj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:35:23