使用pyqtgraph.image()更改显示颜色尺度的限制

1 投票
1 回答
3304 浏览
提问于 2025-04-18 17:41

我想改变显示数据的范围(我不太确定这是不是正确的说法),我希望把红色圈起来的范围改成3到6,作为启动时的默认值。

找红色部分

我看过的资料都说这应该很简单,只需要找到ImageView对象,然后调用setLevels(),就像这里展示的那样。问题是我找不到在ImageWindow里面的ImageView对象。

这是我最开始的代码:

imv = pg.image(amps)
okay = imv.imageItem

imv.view.setAspectLocked(ratio = 4)
print( vars(imv))
imv.setLimits(3,6)

win = QtGui.QMainWindow()

#im.setLookupTable(lut)
if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):            
        QtGui.QApplication.instance().exec_()

但是它提示说ImageWindow没有setLimits这个属性。

我尝试通过运行以下代码来寻找ImageView:

print(vars(imv))

但我找到的最接近的东西是ImageItem,不过:

imv.imageItem.setLevels(3,6)

这又报错说“levels参数必须是一维或二维”。这让我觉得这条路可能不对。

谢谢你的帮助。

编辑:

我尝试了:

imv.imageItem.setLevels((3,6))

这产生了以下结果:

新图片

数据的范围是正确的,但右边的图例没有正确更新。

1 个回答

2

ImageWindowImageView 的一个子类,所以它应该可以使用所有相同的方法。相关的文档可以在这里找到:http://www.pyqtgraph.org/documentation/widgets/imageview.html#pyqtgraph.ImageView.setImage

这些都是写大致相同内容的不同方式:

# 1:
pg.image(data, levels=[3, 6])

# 2:
imv = pg.image(data)
imv.setLevels(3, 6)

# 3:
imv = pg.ImageView()
imv.setImage(data, levels=[3, 6])    

撰写回答