網站首頁 編程語言 正文
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
相關推薦
- 2022-06-21 C語言詳解結構體的內存對齊與大小計算_C 語言
- 2022-04-11 c#?理解csredis庫實現分布式鎖的詳細流程_C#教程
- 2023-01-01 echarts-xAxis-底部文字傾斜
- 2022-05-20 C#隊列的簡單使用_C#教程
- 2022-05-28 C語言?超詳細講解庫函數_C 語言
- 2022-06-08 基于Apache?Hudi在Google云構建數據湖平臺的思路詳解_Linux
- 2023-04-20 npm ERR! 400 Bad Request - PUT xxx - Cannot publis
- 2022-09-18 Go語言實現服務端消息接收和發送_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支