gpt4 book ai didi

python - 使用 matplotlib slider 小部件更改图像中的 clim

转载 作者:太空狗 更新时间:2023-10-29 22:20:13 24 4
gpt4 key购买 nike

我几乎没有使用 python 的经验,但我正在尝试创建一个简单的脚本来加载图像并使用 slider 小部件调整颜色条的最小值和最大值,并相应地重绘图像数据。

我正在尝试遵循这个例子:http://matplotlib.sourceforge.net/examples/widgets/slider_demo.html .我试图将 plot 命令更改为 imshow,并使用 slider 值来设置图像的 clim。但是,我从调用“im1,=ax.imshow”(在下面代码的第 12 行)中收到以下错误消息:

'AxesImage' 对象不可迭代

我不明白这个调用的作用,但显然它不能与 imshow() 一起使用。如果我删除该调用中的逗号,我不会收到任何错误,但是当 slider 更改时图像不会更新。有没有人有替代解决方案,或者解释为什么这不起作用?任何帮助将不胜感激,谢谢。

我的代码如下:

from pylab import *
from matplotlib.widgets import Slider, Button, RadioButtons
import matplotlib.pyplot as plt
import numpy as np

close('all')

ax = subplot(111)
subplots_adjust(left=0.25, bottom=0.25)
min0 = 0
max0 = 25000

im=np.loadtxt('im.txt')
im1,=ax.imshow(im)
colorbar()

axcolor = 'lightgoldenrodyellow'
axmin = axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
axmax = axes([0.25, 0.15, 0.65, 0.03], axisbg=axcolor)

smin = Slider(axmin, 'Min', 0, 30000, valinit=min0)
smax = Slider(axmax, 'Max', 0, 30000, valinit=max0)

def update(val):
im1.set_clim=(smin.val,smax.val)
draw()
smin.on_changed(update)
smax.on_changed(update)

show()

最佳答案

大多数情况下,您只是遇到了很多语法问题。

例如,您试图解压缩单个值 (im1,=ax.imshow(im)),从而给出您在问题中提到的 TypeError(如它应该)。当您打算调用函数时,您还可以将函数设置为一个值:(im1.set_clim=(smin.val,smax.val))。

此外,我从您的示例中删除了 from pylab import * 。这对于交互使用来说很好,但是请不要将它用于实际代码。这使得很难分辨您正在调用的函数来自何处(特别是 pylab 命名空间,巨大的设计。它应该被使用用于交互式使用或快速一次性脚本。)

这是一个工作示例(使用随机数据):

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Slider, Button, RadioButtons

fig = plt.figure()
ax = fig.add_subplot(111)
fig.subplots_adjust(left=0.25, bottom=0.25)
min0 = 0
max0 = 25000

im = max0 * np.random.random((10,10))
im1 = ax.imshow(im)
fig.colorbar(im1)

axcolor = 'lightgoldenrodyellow'
axmin = fig.add_axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
axmax = fig.add_axes([0.25, 0.15, 0.65, 0.03], axisbg=axcolor)

smin = Slider(axmin, 'Min', 0, 30000, valinit=min0)
smax = Slider(axmax, 'Max', 0, 30000, valinit=max0)

def update(val):
im1.set_clim([smin.val,smax.val])
fig.canvas.draw()
smin.on_changed(update)
smax.on_changed(update)

plt.show()

关于python - 使用 matplotlib slider 小部件更改图像中的 clim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5611805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com