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

PyQtGraph颜色栏刻度值替换为文本的实现方法求助

解决PyQtGraph ColorBarItem刻度替换为文本的问题

直接修改ColorBarItem关联轴的刻度标签就能实现需求,下面是具体步骤和代码示例:

  • 先定义状态与刻度值的映射:state_labels = {0: 'Off', 1: 'Idle', 2: 'Running'}
  • 获取ColorBarItem的轴对象(垂直颜色栏对应left轴,水平颜色栏对应bottom轴)
  • 用setTicks方法绑定刻度值和对应文本

完整代码片段

import pyqtgraph as pg
import numpy as np
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout

app = QApplication([])
win = QMainWindow()
central = QWidget()
win.setCentralWidget(central)
layout = QVBoxLayout(central)

# 生成模拟数据(3行对应0/1/2三种状态)
data = pg.gaussianFilter(np.random.rand(3, 100), (0, 2))

# 创建ImageItem并添加到视图
img_item = pg.ImageItem(data)
view = pg.ViewBox()
view.addItem(img_item)
layout.addWidget(view)

# 自定义颜色栏(替换成你自己的配置)
cmap = pg.colormap.get('viridis')
color_bar = pg.ColorBarItem(values=(0, 2), colorMap=cmap, orientation='vertical')
color_bar.setImageItem(img_item)
layout.addWidget(color_bar)

# 核心:替换刻度文本
state_labels = {0: 'Off', 1: 'Idle', 2: 'Running'}
# 获取颜色栏的左侧轴
axis = color_bar.getAxis('left')
# 设置刻度值与对应文本
axis.setTicks([[(0, 'Off'), (1, 'Idle'), (2, 'Running')]])

# 强制显示指定刻度(如果默认刻度不包含0/1/2的话)
axis.setTickValues([0, 1, 2])

win.show()
app.exec()

如果你的颜色栏是水平方向,只需要把orientation='vertical'改成'horizontal',再把getAxis('left')换成getAxis('bottom')即可。

内容的提问来源于stack exchange,提问作者Kishore Kumar S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 08:42:42