堆积折线图和折线图 堆积折线图


堆积折线图和折线图 堆积折线图


什么是pyqtgraph?
pyqtgraph是qtgraph支持python编程的套件 , 提供了一套基于pyqt的数据可视化分析的解决方案 。包含折线图、柱状图、颜色图等等多种简易的实现可视化图表GUI编程的接口 。
如何安装开发环境?
我通常安装python环境使用Anaconda套件进行安装 , 建议安装3.8以下的python版本 。3.9和3.10版本暂时不支持pyqtgraph的套件 。安装步骤如下:
下载Anaconda
我下载的是Anaconda3.5.1 , 自动安装python3.7版本 。官方下载路径:https://repo.anaconda.com/archive/Anaconda3-5.3.1-Windows-x86_64.exe
安装python环境安装Anaconda python套件 , 一路安装下去就可以了 。安装完之后命令行输入python -V , 回车 , 输出:Python 3.7.0 , 表示python环境已经安装好了 。命令行输入conda install pyqtgraph , 等待安装完成 , pyqtgraph就安装好了 。验证pyqtgraph是否成功安装 。新建文件main.py , 输入import pyqtgraph as pg , 保存关闭文件 。命令行输入python main.py执行 , 如果没有报错表示安装成功了 。什么是折线图?
折线图是由一个直角坐标系(也叫笛卡尔坐标系)、线、点组成的统计图表 。通常用来表示一段数据(时间、变化)之内的一组或者多组数据的趋势 。
图1 一组数据查看增加人数的趋势
【堆积折线图和折线图 堆积折线图】图2 两组或多组数据查看数据趋势和对比情况
折线图的适用场景和不适用场景适用场景一组数据随另外一组有序的数据变化多组数据随一组有序的数据变化不适用的场景有序数据通常放在X轴 , 如果X轴数据过多 , 使用折线图导致折线堆叠 , 导致数据变化趋势堆积 。数据样本过多 , 数据组太多导致折线堆叠 , 难以聚焦重点 。数据组中的数据 , 大多数的值为0 , 折线图会出现很多三角形数据 。用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
# 定义Qt的ui处理类
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(600, 400)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "pyqtgraph example"))
# 定义UI的逻辑类
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, 400)
# 创建画笔
chartPen = pg.mkPen(color=(107,200,224), width=2)
# 创建一个坐标系画板
plot = win.addPlot(title="随机数据对比")
# 加入随机的点数据
plot.plot(y=np.random.normal(size=20), pen = chartPen, title="随机数据1")
plot.plot(y=np.random.normal(size=20)+5, pen = chartPen, title="随机数据2", symbolPen='w')

推荐阅读