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

如何设置PyQtGraph ImageView直方图LUT的默认渐变颜色?

如何修改PyQtGraph ImageView的默认颜色渐变样式?

PyQtGraph的ImageView组件自带的直方图支持两个核心功能:

  • 通过拖动区域定义图像的明暗级别范围
  • 编辑颜色渐变生成颜色查找表(LUT),为图像添加伪彩色效果

默认情况下该直方图的颜色渐变是黑白样式,我们可以通过两种方式修改默认渐变:使用内置预设渐变,或者自定义渐变。

方法1:使用PyQtGraph内置预设渐变

PyQtGraph内置了多种常用颜色渐变(如viridis、plasma、inferno等),可直接调用并设置给ImageView的直方图:

import numpy as np
import pyqtgraph as pg

data = np.array(
    [
        [0.0, 0.0, 0.5, 2.5, 2.5, 3.5],
        [2.0, 2.0, 1.5, 0.5, 2.5, 3.5],
        [2.0, 2.0, 2.0, 2.5, 0.5, 1.5],
        [3.0, 3.0, 2.5, 3.0, 1.5, 0.5],
        [3.0, 3.0, 3.0, 4.5, 1.5, 1.5],
    ]
)

app = pg.Qt.mkQApp("Example Cost Matrix Visualisation")

plot = pg.PlotItem()
plot.setTitle("Cost Matrix")
plot.setLabel(axis="top", text="Y Signal")
plot.setLabel(axis="left", text="X Signal")

im = pg.ImageItem(data, axisOrder="row-major")
imv = pg.ImageView(imageItem=im, view=plot)

# 调用内置的viridis渐变
cmap = pg.colormap.get("viridis")
imv.ui.histogram.gradient.setColorMap(cmap)

imv.show()
imv.setHistogramLabel("Cost Matrix Histogram")

app.exec()

方法2:自定义颜色渐变

如果内置渐变不符合需求,可手动创建自定义渐变,添加多组颜色控制点:

import numpy as np
import pyqtgraph as pg
from pyqtgraph import GradientWidget

data = np.array(
    [
        [0.0, 0.0, 0.5, 2.5, 2.5, 3.5],
        [2.0, 2.0, 1.5, 0.5, 2.5, 3.5],
        [2.0, 2.0, 2.0, 2.5, 0.5, 1.5],
        [3.0, 3.0, 2.5, 3.0, 1.5, 0.5],
        [3.0, 3.0, 3.0, 4.5, 1.5, 1.5],
    ]
)

app = pg.Qt.mkQApp("Example Cost Matrix Visualisation")

plot = pg.PlotItem()
plot.setTitle("Cost Matrix")
plot.setLabel(axis="top", text="Y Signal")
plot.setLabel(axis="left", text="X Signal")

im = pg.ImageItem(data, axisOrder="row-major")
imv = pg.ImageView(imageItem=im, view=plot)

# 创建自定义渐变:从蓝色过渡到黄色再到红色
gradient = GradientWidget()
gradient.setGradient([
    (0.0, (0, 0, 255)),    # 数据最小值对应蓝色
    (0.5, (255, 255, 0)),  # 数据中间值对应黄色
    (1.0, (255, 0, 0))     # 数据最大值对应红色
])
imv.ui.histogram.gradient.setGradient(gradient.getGradient())

imv.show()
imv.setHistogramLabel("Cost Matrix Histogram")

app.exec()

关键说明

  • 核心操作是通过imv.ui.histogram.gradient访问直方图的渐变组件,再调用setColorMap()(内置色图)或setGradient()(自定义渐变)修改默认样式。
  • 自定义渐变的控制点格式为(位置比例, RGB颜色元组),位置比例范围0-1,对应图像数据的最小值到最大值。

内容的提问来源于stack exchange,提问作者Kyle F. Hartzenberg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:57:26