简单说说,Qt 实现excel数据表现为柱状图和饼图

鱼弦
全栈领域优质创作者
博客专家认证
2023-08-04 09:59:03

实现效果图如下:

 

 

要使用PyQt实现将Excel数据表示为柱状图和饼图,可以使用Matplotlib库来绘制图表,并结合PyQt的QChart和QChartView来显示图表。

以下是一个示例代码,演示如何读取Excel数据并显示柱状图和饼图:

import sys
import pandas as pd
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt5.QtChart import QChart, QChartView, QBarSeries, QBarSet, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Excel Chart")

        # 读取Excel数据
        df = pd.read_excel("data.xlsx")

        # 创建柱状图
        bar_chart = self.create_bar_chart(df)

        # 创建饼图
        pie_chart = self.create_pie_chart(df)

        # 创建布局
        layout = QVBoxLayout()
        layout.addWidget(bar_chart)
        layout.addWidget(pie_chart)

        # 创建主窗口
        central_widget = QWidget()
        central_widget.setLayout(layout)
        self.setCentralWidget(central_widget)

    def create_bar_chart(self, df):
        # 创建柱状图
        chart = QChart()
        chart.setTitle("Bar Chart")

        # 创建数据系列
        series = QBarSeries()

        # 添加数据
        for column in df.columns:
            bar_set = QBarSet(column)
            bar_set.append(df[column].tolist())
            series.append(bar_set)

        # 添加数据系列到图表
        chart.addSeries(series)

        # 设置X轴和Y轴
        chart.createDefaultAxes()

        # 创建图表视图
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)

        return chart_view

    def create_pie_chart(self, df):
        # 创建饼图
        chart = QChart()
        chart.setTitle("Pie Chart")

        # 创建数据系列
        series = QPieSeries()

        # 添加数据
        for column in df.columns:
            for index, value in enumerate(df[column]):
                slice = QPieSlice(column, index)
                slice.setValue(value)
                series.append(slice)

        # 添加数据系列到图表
        chart.addSeries(series)

        # 创建图表视图
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.Antialiasing)

        return chart_view

if __name__ == "__main__":
    app = QApplication(sys.argv)

    # 创建主窗口
    window = MainWindow()
    window.show()

    sys.exit(app.exec_())

在这个示例代码中,我们使用pandas库来读取Excel数据。然后,我们使用QChart和QChartView创建柱状图和饼图。对于柱状图,我们使用QBarSeries和QBarSet来表示数据系列和柱状图的柱子。对于饼图,我们使用QPieSeries和QPieSlice来表示数据系列和饼图的分片。

请确保已经安装了PyQt5、pandas和Matplotlib库。你可以使用pip来安装这些库:

pip install PyQt5 pandas matplotlib PyQtChart openpyxl

在运行代码之前,将数据保存为名为"data.xlsx"的Excel文件,并确保数据按列组织。

运行示例代码后,将会显示一个窗口,其中包含柱状图和饼图,根据Excel数据进行绘制。

 相对的C++实现引入相关的头文件也可以实现。

 

 

 

...全文
450 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

125

社区成员

发帖
与我相关
我的任务
社区描述
全栈技术社区,指在创建一个和谐的技术群体,共同学习进步
qt前端tcp/ip 个人社区 四川省·成都市
社区管理员
  • 鱼弦
  • M malloc
  • 恰柠
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧