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_())
效果图
补充
除了散点图,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-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_())
来源:https://blog.csdn.net/songyulong8888/article/details/128329544
标签:PyQt5,QtChart,散点图
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
段正淳的css笔记(6)-浅谈css框架开发
2008-01-13 22:42:00
![](https://img.aspxhome.com/file/UploadPic/20081/13/2008113224547397s.gif)
SQLSERVER查看数据库日志方法与语句示例代码(已亲测)
2024-01-17 21:32:35
![](https://img.aspxhome.com/file/2023/6/106236_0s.png)
用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
![](https://img.aspxhome.com/file/2023/7/131557_0s.png)
超常用的PHP正则表达式收集整理
2024-05-03 15:35:57
Python中的字典与成员运算符初步探究
2023-01-28 09:59:18
![](https://img.aspxhome.com/file/2023/3/86433_0s.jpg)
flask实现验证码并验证功能
2022-02-03 07:40:02
![](https://img.aspxhome.com/file/2023/8/133708_0s.jpg)
Python Django框架单元测试之文件上传测试示例
2022-02-26 23:50:51
![](https://img.aspxhome.com/file/2023/0/75920_0s.png)
用javascript结合Cookies记录浏览历史
2008-02-12 12:37:00
python 根据正则表达式提取指定的内容实例详解
2023-07-18 01:23:48
使用python实现飞机大战游戏
2021-05-11 12:02:16
![](https://img.aspxhome.com/file/2023/1/97111_0s.jpg)
python在Windows8下获取本机ip地址的方法
2023-07-31 17:10:44
python实操练习案例(一)
2022-01-18 12:10:41
![](https://img.aspxhome.com/file/2023/6/115176_0s.png)