Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说pyqtgraph系列文章:直方图(Histogram)[亲测有效],希望能够帮助你!!!。
关于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 |
成绩通知数据生成直方图如下:
语文成绩统计数据直方图
创建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可以设置直方图边框颜色,感兴趣可以交流。
上一篇
已是最后文章
下一篇
已是最新文章