1.将画好的图表关联 解释说明图

2.新建一个文件画曲线图,并关联到UI的py文件上,上代码
import sys
from PyQt5.Qt import *
from PyQt5.QtChart import QChartView, QChart, QValueAxis, QSplineSeries
from PyQt5.QtGui import QPainter, QColor, QFont
from PyQt5.QtWidgets import QMainWindow, QApplication
from untitled import Ui_MainWindow #从生成好的py文件内导入设计好的UI类
class Window(QMainWindow, Ui_MainWindow):#这个是将图表与UI图连接起来
def __init__(self):
super().__init__()
self.setup_ui() # 渲染画布
def setup_ui(self):
self.setupUi(self)
self.plot_qchart = User_QSplineSeries() #将图表实例化
self.graphicsView.setChart(self.plot_qchart)
self.graphicsView.setRenderHint(QPainter.Antialiasing) # 抗锯齿
self.graphicsView.setRubberBand(QChartView.RectangleRubberBand)
class User_QSplineSeries(QChart): #绘制曲线图
def __init__(self, parent=None, ):
super(User_QSplineSeries, self).__init__(parent)
self.window = parent
#设置x轴
self.axisX = QValueAxis()
self.axisX.setRange(0, 10)#X轴的范围
self.axisX.setLabelFormat("%d")#X轴上数字显示的类型
self.axisX.setLabelsColor(QColor(0, 0, 0)) # X轴上显示数字的颜色
self.addAxis(self.axisX, Qt.AlignBottom) #X轴放底部
# 设置y轴
self.axisY = QValueAxis()
self.axisY.setRange(0,200)#Y轴的范围
self.addAxis(self.axisY, Qt.AlignLeft) #设置Y坐标放在左侧
self.axisY.setTitleText("单位:分钟")#设置Y坐标的名称
self.setTitle("视频时长曲线图")#设置整个图表的标题
self.setTitleFont(QFont("微软雅黑"))#设置整个图表的标题的字体
#----------------------------------------
#添加曲线
self.series =QSplineSeries() #使用曲线
self.series.setName("视频提示等待时长") #设置曲线的名字
# 添加曲线上的点,添加数据用这个
self.series.append(1,60)
self.series.append(2,50)
self.series.append(8,90) #给曲线添加值 x=8 y=90的意思;分别加了3个点
#--------
self.series.setVisible(True)#将曲线显示出来
#设置曲线上点的显示
font = QFont()
font.setPointSize(12)
self.series.setPointLabelsFont(font)#给显示的点坐标设置字体大小
self.series.setPointLabelsFormat("@yPoint分钟")#设置点坐标显示的格式
self.series.setPointLabelsVisible(True)#将点坐标显示出来
#将曲线加到坐标图里面去
self.addSeries(self.series)
self.series.attachAxis(self.axisX)#让曲线与坐标轴对应
self.series.attachAxis(self.axisY)
self.series.setColor(QColor(126,211,33))#设置曲线的颜色
# -------------------------------------------------------
if __name__ == "__main__":
app = QApplication(sys.argv)
mywindow = Window()
mywindow.show()
sys.exit(app.exec_())
3.执行效果

4.画多条
①将图中的代码复制一遍,选中的变量重新命名
②把曲线颜色更改一下,添加的数据更改一下 ,曲线名称更改一下,就可以画第二条了

第二条曲线代码
#添加曲线2
self.series1 =QSplineSeries() #使用曲线
self.series1.setName("视频真实时长") #设置曲线的名字
# 添加曲线上的点,添加数据用这个
self.series1.append(2,30)
self.series1.append(3,50)
self.series1.append(7,90) #给曲线添加值 x=8 y=90的意思;分别加了3个点
#--------
self.series1.setVisible(True)#将曲线显示出来
#设置曲线上点的显示
font = QFont()
font.setPointSize(12)
self.series1.setPointLabelsFont(font)#给显示的点坐标设置字体大小
self.series1.setPointLabelsFormat("@yPoint分钟")#设置点坐标显示的格式
self.series1.setPointLabelsVisible(True)#将点坐标显示出来
#将曲线加到坐标图里面去
self.addSeries(self.series1)
self.series1.attachAxis(self.axisX)#让曲线与坐标轴对应
self.series1.attachAxis(self.axisY)
self.series1.setColor(QColor(26,11,233))#设置曲线的颜色
5.执行效果




















