📜  PyQtGraph - 条形图的视图边界更改事件

📅  最后修改于: 2022-05-13 01:55:37.500000             🧑  作者: Mango

PyQtGraph - 条形图的视图边界更改事件

在本文中,我们将看到如何使用 PyQtGraph 模块中的条形图创建视图边界更改事件。 PyQtGraph 是一个用于Python的图形和用户界面库,它提供了设计和科学应用程序中通常需要的功能。它的主要目标是提供用于显示数据(绘图、视频等)的快速交互式图形,其次是提供帮助快速应用程序开发的工具(例如,Qt Designer 中使用的属性树)。条形图或条形图是一种图表或图形,它用矩形条显示分类数据,矩形条的高度或长度与其所代表的值成正比。条形可以垂直或水平绘制。垂直条形图有时也称为柱形图。当条形图的视图边界改变时触发此事件。

我们可以在下面给出的命令的帮助下创建一个绘图窗口和条形图

# creating a pyqtgraph plot window
window = pg.plot()

# creating a bar graph of green color
bargraph = pg.BarGraphItem(x=x, height=y1, width=0.6, brush='g')

为了做到这一点,我们修改了条形图类,下面是可以使用的类

# Bar Graph class
class BarGraphItem(pg.BarGraphItem):
    
    # constructor which inherit original 
    # BarGraphItem
    def __init__(self, *args, **kwargs):
        pg.BarGraphItem.__init__(self, *args, **kwargs)

    # creating view bounds changed event
    def informViewBoundsChanged(self):

        # print the message
        print("View Bounds Changed")

下面是实现

# importing Qt widgets
from PyQt5.QtWidgets import * import sys
  
# importing pyqtgraph as pg
import pyqtgraph as pg
from PyQt5.QtGui import *
  
# Bar Graph class
class BarGraphItem(pg.BarGraphItem):
  
    # constructor which inherit original
    # BarGraphItem
    def __init__(self, *args, **kwargs):
        pg.BarGraphItem.__init__(self, *args, **kwargs)
  
    # creating view bounds changed event
    def informViewBoundsChanged(self):
  
        # print the message
        print("View Bounds Changed")
  
  
  
  
class Window(QMainWindow):
  
    def __init__(self):
        super().__init__()
  
        # setting title
        self.setWindowTitle("PyQtGraph")
  
        # setting geometry
        self.setGeometry(100, 100, 600, 500)
  
  
        # icon
        icon = QIcon("skin.png")
  
        # setting icon to the window
        self.setWindowIcon(icon)
  
        # calling method
        self.UiComponents()
  
        # showing all the widgets
        self.show()
  
    # method for components
    def UiComponents(self):
  
        # creating a widget object
        widget = QWidget()
  
        # creating a plot window
        plot = pg.plot()
  
        # create list for y-axis
        y1 = [5, 5, 7, 10, 3, 8, 9, 1, 6, 2]
  
        # create horizontal list i.e x-axis
        x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  
        # create pyqt5graph bar graph item
        # with width = 0.6
        # with bar colors = green
        bargraph = BarGraphItem(x = x, height = y1, width = 0.6, brush ='g')
  
        # bargraph.viewRangeChanged.connect(lambda: print("sss"))
        # add item to plot window
        # adding bargraph item to the plot window
        plot.addItem(bargraph)
  
        # Creating a grid layout
        layout = QGridLayout()
  
        # setting this layout to the widget
        widget.setLayout(layout)
  
        # plot window goes on right side, spanning 3 rows
        layout.addWidget(plot, 0, 1, 3, 1)
  
        # setting this widget as central widget of the main widow
        self.setCentralWidget(widget)
  
  
# create pyqt5 app
App = QApplication(sys.argv)
  
# create the instance of our Window
window = Window()
  
# start the app
sys.exit(App.exec())

输出 :

View Bounds Changed