编程技术文章分享与教程

网站首页 > 技术文章 正文

pyqtgraph系列文章:直方图(Histogram)

hmc789 2024-11-12 11:41:40 技术文章 2 ℃

关于pyqtgraph的介绍,有兴趣的可以看我的文章《pyqtgraph系列文章:折线图》

什么是直方图?

直方图,又叫质量分布图,是表示数据的分布情况的统计图表。 常用横轴表示数据区间、纵轴表示分布情况,矩形柱体越高,表示落在这个区域的数量越大。

举个简单例子,针对某班级语文成绩数据,我们想看各个区间内的成绩,就可以用直方图来表示。

考试语文成绩

浩渺

74

山厚

71

家靖

38

奕峰

75

璇子

85

绎涵

89

鹏涵

2

然度

97

智刚

40

晟永

89

科曦

97

鸿博

29

峥铭

5

政祯

18

华翰

30

信震

64

涛纪

100

良平

63

煦煜

23

振东

63

嘉瑞

2

炜睿

12

彬军

32

楠浩

69

云乐

93






语文成绩统计数据

0分-59分

11

60分-79分

7

80分-100分

7

成绩通知数据生成直方图如下:

用pyqtgraph简单实现直方图

创建main.py,在文件中输入下面的代码。老规矩,直接上代码吧。

import os
import sys
import numpy as np
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore
from PyQt5.QtWidgets import QWidget, QApplication

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(600, 300)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "pyqtgraph example"))

class MainWindow(QWidget, Ui_MainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setupUi(self)
        self.setStyleSheet("background-color:rgb(255,255,255)")
        self.showLineChart()
        
    def showLineChart(self):
        # 创建一个GraphicsWidget
        win = pg.GraphicsLayoutWidget(self, show=True)
        # 设置widget大小
        win.resize(600, 300)
        # 创建一个Plot画板
        plot = win.addPlot(title="柱状图例子")
        # 加入随机的点数据
        barItem = pg.BarGraphItem(x=[1,2,3,4,5],height=[10,12,2,15,20,0], width = 0.5, brush=(107,200,224))
        plot.addItem(barItem)
        

if __name__ == '__main__':
    # 设置背景色
    pg.setConfigOption('background', 'w')
    # 设置平滑绘制
    pg.setConfigOptions(antialias = True)
    # 创建Application
    app = QApplication(sys.argv)
    # 创建对话框
    mainWidget = MainWindow()
    # 对话框显示
    mainWidget.show()
    # 执行app
    sys.exit(app.exec_())

执行结果展示

命令行输入:python main.py,在绘制区域可以拖动图标移动位置,也可以通过滚动鼠标放大/缩小。

核心代码注解

代码40行:设置背景颜色。

代码42行:设置绘制线条平滑绘制,如果不设置这一项,绘制的折线会有锯齿。

代码28行:再MainWindow上创建一个GraphicsWidget,参数self表示在MainWindow上创建。

代码32行:创建一个坐标系画板,创建之后坐标系就出来了。

代码34行:设置直方图数据item。参数解释如下:

参数x:是一个列表数据[],参数x是有序的数据。

参数y:是纵坐标点上的数据,代表直方图高度。

参数width:代表直方图的柱体宽度,需要根据x轴高度进行调整。

参数brush:设置直方图颜色。

省略参数:这里省略了很多参数,如pen可以设置直方图边框颜色,感兴趣可以交流。

Tags:

标签列表
最新留言