数据可视化 第5章
第5章 添加图表视图
我们使用QChartView来把数据图表化
1.追加chart_widget.py,窗口左侧显示表格数据,右侧准备显示图表
from PySide2.QtGui import QPainter
from PySide2.QtWidgets import (QWidget, QHeaderView, QHBoxLayout, QTableView, QSizePolicy)
from PySide2.QtCharts import QtCharts
from table_model import *
class Widget(QWidget):
def __init__(self, data):
QWidget.__init__(self)
#获取model
self.model = CustomTableModel(data)
#创建QTableView
self.table_view = QTableView()
self.table_view.setModel(self.model)
#QTableView 表头自适应以及拉伸
self.horizontal_header = self.table_view.horizontalHeader()
self.vertical_header = self.table_view.verticalHeader()
self.horizontal_header.setSectionResizeMode(QHeaderView.ResizeToContents)
self.vertical_header.setSectionResizeMode(QHeaderView.ResizeToContents)
self.horizontal_header.setStretchLastSection(True)
# 创建 QChart
self.chart = QtCharts.QChart()
# 设置全动画模式
self.chart.setAnimationOptions(QtCharts.QChart.AllAnimations)
# 创建 QChartView
self.chart_view = QtCharts.QChartView(self.chart)
# 设置抗锯齿
self.chart_view.setRenderHint(QPainter.Antialiasing)
# 窗口布局
self.main_layout = QHBoxLayout()
size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
## 左侧布局
size.setHorizontalStretch(1)
self.table_view.setSizePolicy(size)
self.main_layout.addWidget(self.table_view)
## 右侧布局
size.setHorizontalStretch(4)
self.chart_view.setSizePolicy(size)
self.main_layout.addWidget(self.chart_view)
# 窗口添加布局
self.setLayout(self.main_layout)
2.运行效果