当前位置: 首页 > article >正文

python-使用Qchart总结3-绘制曲线图

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.执行效果

 

 

 


http://www.kler.cn/a/16238.html

相关文章:

  • 【论文阅读】WaDec: Decompiling WebAssembly Using Large Language Model
  • 怎么选择香港服务器的线路?解决方案
  • Java集合框架之Collection集合遍历
  • Ps:OpenColorIO 设置
  • Vue计算属性computed
  • 基于Spring Boot与Redis的令牌主动失效机制实现
  • 马斯克们叫停 GPT-5,更像是场行为艺术
  • 【SpringBoot 应用打包与部署】
  • 为什么越来越多的企业选择云计算
  • 《Netty》从零开始学netty源码(四十六)之PooledByteBuf
  • 不能使用chatGPT?这3个平替甚至比chatGPT更强
  • 万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 2 (传统机器学习方法如何选择)...
  • 《孙子兵法》中关于领导力的一个不错的描述
  • 创建NAT模式KVM虚拟机
  • spring常用的事务传播行为
  • CSS(二)-- 选择器的运用(针对基本选择器和复合选择器的详细解析)
  • 一文了解使用Moonbeam原生跨链的潜力项目
  • 【Java笔试强训 27】
  • 【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
  • LeetCode_字符串_简单_415.字符串相加
  • 终于把 vue-router 运行原理讲明白了(二)!!!
  • 票务app开发案例分享
  • 【JAVA】#详细介绍!!! 文件操作之File对象(1)!
  • 从信息泄露到权限后台
  • Java面试题队列
  • Pandoc 从入门到精通,你也可以学会这一个文本转换利器