149.Python-PySide6中的数据图表显示

使用TableView呈现数据,使用QChartView显示图表。

效果

实现代码

import sys
from PySide6 import QtCore,QtGui,QtWidgets,QtCharts
import random

class MainWindow(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        
        #创建表格模型
        self.model=QtGui.QStandardItemModel()
        self.tableview = QtWidgets.QTableView()
        
        #随机填充数据到模型(y=2*x+randint)
        for i in range(20):
            self.model.setItem(i,0,QtGui.QStandardItem(str(i)))
            self.model.setItem(i,1,QtGui.QStandardItem(str(2*i+random.randint(1,20))))
        
        #设置表头
        self.model.setHorizontalHeaderLabels(["x","y"])
        #设置行列自适应
        self.tableview.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
        self.tableview.verticalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
        self.tableview.setModel(self.model)
        
        #创建图表实例,并设置图表数据
        self.chart=QtCharts.QChart()
        self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)
        
        self.series = QtCharts.QLineSeries()
        self.series.setName("y=2*x+b")
        
        self.mapper = QtCharts.QVXYModelMapper(self)
        self.mapper.setXColumn(0)
        self.mapper.setYColumn(1)
        self.mapper.setSeries(self.series)
        self.mapper.setModel(self.model)
        self.chart.addSeries(self.series)
        
        self.chart.createDefaultAxes()
        self.chartview=QtCharts.QChartView(self.chart)
        self.chartview.setRenderHint(QtGui.QPainter.Antialiasing)
        self.chartview.setMinimumSize(640,480)
        
        #创建布局
        self.mainlayout=QtWidgets.QGridLayout()
        self.mainlayout.addWidget(self.tableview,1,0)
        self.mainlayout.addWidget(self.chartview,1,1)
        self.mainlayout.setColumnStretch(1,1)
        self.mainlayout.setColumnStretch(0,0)
        self.setLayout(self.mainlayout)
        
if __name__ == "__main__":
    app=QtWidgets.QApplication(sys.argv)
    mywin=MainWindow()
    mywin.setWindowTitle("Model Data")
    mywin.show()
    sys.exit(app.exec())
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章