python-3.x Pyqtgraph ColorBarItem在数字旁边添加字符串

e4eetjau  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(183)

下面的代码是pyqtgraph示例“矩阵显示”的简单修改。

import pyqtgraph as pg
from pyqtgraph.Qt import QtWidgets, mkQApp

class MyBar(pg.ColorBarItem):
    def __init__(self, *args, **kargs):
        super().__init__(*args,**kargs)
        self.unit = "cm"
        self.display_unit()
    
    def display_unit(self):
        pass

class MainWindow(QtWidgets.QMainWindow):
    """ example application main window """
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        gr_wid = pg.GraphicsLayoutWidget(show=True)
        self.setCentralWidget(gr_wid)
        self.resize(600,500)
        self.show()

        bar = MyBar( values=(-1,1), colorMap=None)
        gr_wid.addItem(bar)

mkQApp("")
main_window = MainWindow()

if __name__ == '__main__':
    pg.exec()

我的环境中安装了PyQt5pyqtgraph。代码运行并给出:

我想写一个方法来添加单位到我的酒吧。给定一个字符串unit,在本例中是"cm",我想实现以下两个中的任何一个,最好是在这个类MyBar中:
1.单位显示在顶部数字旁边:

1.添加一个字符串,作为整个条形上方或顶部数字上方的标题,表示“unit = cm”:

请注意,我只是要求显示一个额外的字符串。酒吧的功能方面没有任何变化。我试图通过源代码,但没有发现任何有助于实现这一点的方法。

agxfikkp

agxfikkp1#

实际上有一个“适当”的方法来让它工作。pyqtgraph有一个内置的轴单位自动处理,它自动将单位缩放到正确的SI前缀('m '表示milli-,'k'表示kilo-等)。所以你只需要抓住ColorBarItem的主轴,并给予它一个合适的单位。
需要注意的是,“c”表示centi-不被认为是SI前缀py pyqtgraph -它将自动地表示milli-。所以,如果你想强制它使用“cm”并放弃任何自动缩放功能,你需要在轴上调用enableAutoSIPrefix(False)

import pyqtgraph as pg
from pyqtgraph.Qt import QtWidgets, mkQApp

class MyBar(pg.ColorBarItem):
    def __init__(self, *args, units=None, **kargs):
        super().__init__(*args, **kargs)

        if units is not None:
            self.set_units(units)

    def set_units(self, units):
        self.axis.setLabel(units=units)

class MainWindow(QtWidgets.QMainWindow):
    """ example application main window """

    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        gr_wid = pg.GraphicsLayoutWidget(show=True)
        self.setCentralWidget(gr_wid)
        self.resize(600, 500)
        self.show()

        bar = MyBar(values=(-0.01, 0.01), colorMap=None, units="m")
        gr_wid.addItem(bar)

mkQApp("")
main_window = MainWindow()

if __name__ == '__main__':
    pg.exec()

相关问题