PyQt5+QtChart绘制散点图

作者:SongYuLong的博客 时间:2023-02-27 01:50:43 

PyQt5 QtChart-散点图

QScatterSeries类将数据以散点图显示

import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5.QtChart import QScatterSeries, QChart, QChartView, QPolarChart

class MyScatterWindow(QWidget):
   def __init__(self, parent=None):
       super(MyScatterWindow, self).__init__(parent)
       self.resize(800, 600)
       chart = QChart()
       chartView = QChartView()

print(PYQT_VERSION_STR)

scatter = QScatterSeries()
       for value in range(1, 500):
           scatter.append(value, random.random()*10)
           #scatter.append(QPointF(value, random.random()*10))

scatter.setName("散点图")
       scatter.setMarkerSize(8)   # 标记大小
       # scatter.setMarkerShape(QScatterSeries.MarkerShapeRectangle) #方形标记
       scatter.setMarkerShape(QScatterSeries.MarkerShapeCircle) # 圆形标记
       pen = QPen()
       pen.setColor(Qt.red)
       pen.setWidth(2)
       scatter.setPen(pen)    

chart.addSeries(scatter)
       chart.createDefaultAxes()

chartView.setChart(chart)

vbox = QVBoxLayout()
       vbox.addWidget(chartView)

self.setLayout(vbox)

if __name__ == "__main__":
   app = QApplication(sys.argv)
   win = MyScatterWindow()
   win.show()
   sys.exit(app.exec_())

效果图 

PyQt5+QtChart绘制散点图

补充

除了散点图,PytQt5和QtChart还可以绘制其他的图表。下面是小编为大家整理的其他图表绘制的示例代码,需要的可以参考一下

PyQt5 QtChart-饼状图

QPieSeries类将数据以饼状图显示

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5.QtChart import QPieSeries, QPieLegendMarker, QChart, QChartView

class MyPieWindow(QWidget):
   def __init__(self, parent=None):
       super(MyPieWindow, self).__init__(parent)

chart = QChart()
       chartView = QChartView()
       pieSeries = QPieSeries()

slice0 = pieSeries.append("铁:%10", 1)
       pieSeries.append("铝:%20", 2)
       pieSeries.append("铜:%70", 7)
       pieSeries.setLabelsVisible()
       pieSeries.setPieSize(0.6)

slice0.setExploded() # 外伸
       slice0.setColor(QColor(255, 0, 150))

chart.setTitle("饼状图")
       chart.addSeries(pieSeries)

chartView.setChart(chart)
       chartView.setRenderHint(QPainter.Antialiasing)

vbox = QVBoxLayout()
       vbox.addWidget(chartView)
       self.setLayout(vbox)

if __name__ == "__main__":
   app = QApplication(sys.argv)
   win = MyPieWindow()
   win.show()
   sys.exit(app.exec_())

PyQt5+QtChart绘制散点图

PyQt5 QtChart-QLineSeries 折线图

QLineSeries

QLineSeries类将数据序列显示为折线图,其核心代码:

lineSeries = QLineSeries()
lineSeries.append(1, 3)
lineSeries.append(5, 8)
…
chart.addSeries(lineSeries)

常用方法:

  • setPointsVisible(True) :设置数据点显示状态

  • setPointLabelsVisible(True):设置数据点标签显示状态

  • setPointLabelsFormat(“(@xPoint, @yPoint)”):设置数据点标签格式

  • setPointLabelsFont(QFont(None, 8)) :设置数据点标签字体

  • setPointLabelsColor(QColor(255, 0,0)) :设置数据点标签颜色

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtChart import *

import random

class MyWaveWindow(QWidget):
   def __init__(self, parent=None):
       super(MyWaveWindow, self).__init__(parent)
       self.setWindowTitle("折线图")

# 创建图表 并设置相关参数
       chart = QChart()
       chart.setTitle("随机折线图")
       chart.setAnimationOptions(QChart.SeriesAnimations)
       chart.setAnimationDuration(1000)
       chart.setAnimationEasingCurve(QEasingCurve.InOutCirc)
       # chart.setTheme(QChart.ChartThemeBlueCerulean)
       chart.legend().show()

# 创建折线数据序列
       lineSeries = QLineSeries()
       for value in range(0, 100):
           lineSeries.append(value, round(random.random()*10, 2))

lineSeries.setPointsVisible(True)
       lineSeries.setPointLabelsVisible(True)
       lineSeries.setPointLabelsFormat("(@xPoint, @yPoint)")
       lineSeries.setPointLabelsFont(QFont(None, 8))
       lineSeries.setPointLabelsColor(QColor(255, 0, 0))
       chart.addSeries(lineSeries)

# 创建轴坐标
       # chart.createDefaultAxes()  # 创建默认轴    
       axis_x = QValueAxis()
       axis_x.setLabelFormat("%d")
       axis_x.setMinorTickCount(3)
       axis_x.setRange(0, 100)
       chart.addAxis(axis_x, Qt.AlignBottom)
       lineSeries.attachAxis(axis_x)

axis_y = QValueAxis()
       axis_y.setLabelFormat("%d")
       # axis_y.setTickType(QValueAxis.TicksDynamic)
       axis_y.setTickCount(20)
       axis_y.setMinorTickCount(3)
       axis_y.setRange(0, 10)
       chart.addAxis(axis_y, Qt.AlignLeft)
       lineSeries.attachAxis(axis_y)

chartView = QChartView(chart)
       chartView.setRenderHint(QPainter.Antialiasing)

layout = QVBoxLayout()
       layout.addWidget(chartView)
       self.setLayout(layout)
       self.resize(800, 600)

if __name__ == "__main__":
   app = QApplication(sys.argv)
   win = MyWaveWindow()
   win.show()
   app.exit(app.exec_())

PyQt5+QtChart绘制散点图

来源:https://blog.csdn.net/songyulong8888/article/details/128329544

标签:PyQt5,QtChart,散点图
0
投稿

猜你喜欢

  • 段正淳的css笔记(6)-浅谈css框架开发

    2008-01-13 22:42:00
  • SQLSERVER查看数据库日志方法与语句示例代码(已亲测)

    2024-01-17 21:32:35
  • 用python实现k近邻算法的示例代码

    2022-08-28 16:08:58
  • mysql 截取指定的两个字符串之间的内容

    2024-01-17 21:19:54
  • 验证javascript中Object和Function的关系的三段简单代码

    2024-04-29 13:43:32
  • MSSQL段落还原脚本,SQLSERVER段落脚本

    2024-01-22 14:48:15
  • 浅谈Webpack自动化构建实践指南

    2024-04-29 13:39:58
  • 一个有趣的SQL命题 用一条语句切换BIT型的真假值

    2024-01-24 04:57:38
  • asp如何计算下载一个文件需要多长时间?

    2009-11-25 20:17:00
  • 在Python中操作时间之tzset()方法的使用教程

    2022-10-28 22:22:01
  • Django Admin后台模型列表页面如何添加自定义操作按钮

    2021-02-24 18:57:15
  • 超常用的PHP正则表达式收集整理

    2024-05-03 15:35:57
  • Python中的字典与成员运算符初步探究

    2023-01-28 09:59:18
  • flask实现验证码并验证功能

    2022-02-03 07:40:02
  • Python Django框架单元测试之文件上传测试示例

    2022-02-26 23:50:51
  • 用javascript结合Cookies记录浏览历史

    2008-02-12 12:37:00
  • python 根据正则表达式提取指定的内容实例详解

    2023-07-18 01:23:48
  • 使用python实现飞机大战游戏

    2021-05-11 12:02:16
  • python在Windows8下获取本机ip地址的方法

    2023-07-31 17:10:44
  • python实操练习案例(一)

    2022-01-18 12:10:41
  • asp之家 网络编程 m.aspxhome.com