使用pyqtgraph.image()更改显示颜色尺度的限制
我想改变显示数据的范围(我不太确定这是不是正确的说法),我希望把红色圈起来的范围改成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
ImageWindow
是 ImageView
的一个子类,所以它应该可以使用所有相同的方法。相关的文档可以在这里找到: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])