【PyQt5】Python在PyQt5中使用ECharts绘制图表

能搜到这篇文章的想必对PyQt5和ECharts都有所了解,我也就不多赘述了。
先看看我们要做什么

  1. 用PyQt5写一个界面;
  2. 用HTML写一个ECharts图标,下文以雷达图为例;
  3. 将图标嵌入界面;
  4. 调用JavaScript方法改变图标的值。

PyQt5界面

随便添加一个Layout就行
PyQt5布局

HTML代码

就一个简单的HTML模板,主题内容就是如何在HTML里使用ECharts,写完之后可以打开这个文件看看能不能顺利显示。具体的图表option查看ECharts即可。
例如radar.html:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <script src="echarts.js"></script>
        <title>Radar</title>
        <style type="text/css">
            body {margin: 0; padding: 0; overflow: hidden}
            #main {height: 100%; width: 100%; position: absolute}
        </style>
    </head>
    <body>
        <div id="main"></div>
        <script type="text/javascript">
            let myChart = echarts.init(document.getElementById("main"))

            let option = {
                radar: {
                    shape: 'circle',
                    indicator: [
                        { name: 'A', max: 100},
                        { name: 'B', max: 100},
                        { name: 'C', max: 100},
                        { name: 'D', max: 100}
                    ]
                },
                series: [{
                    type: 'radar',
                    data: [
                        {
                            value: [0, 0, 0, 0],
                            areaColor: "rgba(151,181,215,0.6)",
                            areaStyle: "color",
                            label: {
                                show: true,
                                formatter: function (params) {
                                	// 可自定义显示内容
                                    return params.value
                                }
                            }
                        }
                    ]
                }]
            };

            myChart.setOption(option)
            window.onresize = myChart.resize

			// 修改雷达图的值
            function setValue(vals) {
                option.series[0].data[0].value = vals
                myChart.setOption(option)
            }
        </script>
    </body>
</html>

嵌入PyQt5

由于嵌入的是Web页面,所以需要新的相关依赖:PyQtWebEngine
直接pip安装:pip install PyQtWebEngine
并导入:from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
嵌入的过程就是新建一个WebView添加到Layout,如:

radar_view = QWebEngineView()
web_settings = QWebEngineSettings.globalSettings()
web_settings.setAttribute(QWebEngineSettings.JavascriptEnabled, True)
web_settings.setAttribute(QWebEngineSettings.PluginsEnabled, True)
web_settings.setAttribute(QWebEngineSettings.JavascriptCanOpenWindows, True)

radar_view.load(QUrl("file:///radar.html"))  # 注意格式,绝对路径
radar_layout.addWidget(radar_view)

这样就可以在Layout里显示刚才那张雷达图了。

调用JS方法

比如例子中的方法:修改雷达图的值,像这样写即可顺利调用。

js = "setValue({0})".format(values)
radar_view.page().runJavaScript(js)

如果报错方法未找到,参考Python使用QWebEngineView时报错Uncaught ReferenceError的解决

对比pyecharts

使用pyecharts时会先生成一个HTML文件,再嵌入PyQt5的UI,而且图标的丰富与实用程度远不及原本的ECharts。
但是像pyecharts生成一个文件再加载也有其好处,可以参考Python根据模板生成HTML文件并加载进QWebEngineView

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: PyQt5是一个Python库,可以用于创建图形用户界面(GUI)应用程序。QChart是PyQt5的一个模块,它可以用于绘制并显示各种类型的图表。 要读取Excel文件并在PyQt5使用QChart进行图表绘制,可以按照以下步骤进行: 1. 首先,确保已经安装了PyQt5和pandas库。可以使用pip命令在终端安装它们: ``` pip install pyqt5 pip install pandas ``` 2. 导入所需的模块和类: ```python from PyQt5.QtWidgets import QVBoxLayout, QApplication, QMainWindow, QWidget, QChartView from PyQt5.QtCore import Qt from PyQt5.QtChart import QChart, QLineSeries import pandas as pd ``` 3. 创建一个QChart对象和一个QLineSeries对象: ```python chart = QChart() line_series = QLineSeries() ``` 4. 使用pandas库读取Excel文件的数据: ```python data_frame = pd.read_excel('data.xlsx') ``` 5. 将数据添加到QLineSeries对象: ```python for i in range(len(data_frame)): x = data_frame.iloc[i, 0] # 假设x值在第一列 y = data_frame.iloc[i, 1] # 假设y值在第二列 line_series.append(x, y) ``` 6. 将QLineSeries对象添加到QChart对象: ```python chart.addSeries(line_series) ``` 7. 创建一个QChartView对象,将QChart对象添加到其: ```python chart_view = QChartView(chart) ``` 8. 创建一个QWidget对象,并将QChartView对象添加到其: ```python widget = QWidget() layout = QVBoxLayout() layout.addWidget(chart_view) widget.setLayout(layout) ``` 9. 创建一个QMainWindow对象,并将QWidget对象添加为其心窗口: ```python main_window = QMainWindow() main_window.setCentralWidget(widget) main_window.show() ``` 现在,Excel文件的数据已经读取并绘制图表,可以通过运行该程序来查看结果。请注意,上述代码的'data.xlsx'是Excel文件的文件名,根据实际情况进行修改。 ### 回答2: 在PyQt5,可以使用QChart来读取Excel文件。 首先,需要安装openpyxl库,该库可以让我们在Python读取和写入Excel文件。 使用openpyxl库的第一步是导入它: ```python import openpyxl ``` 然后,需要创建一个QChart对象,用于存储Excel数据。可以使用openpyxl库的`load_workbook`函数来打开Excel文件: ```python workbook = openpyxl.load_workbook('example.xlsx') ``` 其,'example.xlsx'是Excel文件的路径。 接下来,可以通过`get_sheet_names`方法获取工作簿的所有表格名称: ```python sheets = workbook.sheetnames ``` 然后,可以选择要读取的表格。假设要读取第一个表格,可以使用`get_sheet_by_name`方法: ```python sheet = workbook.get_sheet_by_name(sheets[0]) ``` 可以使用`iter_rows`方法逐行读取表格的数据,然后将数据添加到QChart对象: ```python chart_data = [] for row in sheet.iter_rows(values_only=True): chart_data.append(row) ``` 最后,可以关闭Excel文件: ```python workbook.close() ``` 至此,QChart对象已成功读取了Excel文件的数据。 需要注意的是,这只是一个简单的示例,如果要处理更复杂的Excel文件,可能需要更多的代码和逻辑。 以上就是使用QChart在PyQt5读取Excel文件的方法。 ### 回答3: 在PyQt5使用QChart读取Excel文件的步骤如下: 1. 首先,需要安装PyQt5库,可以使用命令 `pip install PyQt5` 来进行安装。 2. 导入所需的类库,包括`QChart`、`QChartView`和`QBarSet`等: ```python from PyQt5.QtChart import QChart, QChartView, QBarSet from PyQt5.QtGui import QPainter from PyQt5.QtCore import Qt import openpyxl ``` 3. 使用`openpyxl`库读取Excel文件的数据,可以使用以下代码: ```python wb = openpyxl.load_workbook('data.xlsx') ws = wb['Sheet1'] data = [] for row in ws.iter_rows(min_row=2, values_only=True): data.append(row) ``` 这段代码会将Excel文件的数据读取到`data`列表。 4. 创建一个`QBarSet`对象,并将读取到的数据添加到该对象: ```python bar_set = QBarSet("Data") for value in data: bar_set.append(value) ``` 5. 创建一个`QChart`对象,并将`QBarSet`对象添加到该对象: ```python chart = QChart() chart.addSeries(bar_set) ``` 6. 创建一个`QChartView`对象,并设置该对象的属性: ```python chart_view = QChartView(chart) chart_view.setRenderHint(QPainter.Antialiasing) chart_view.setMinimumSize(800, 600) ``` 7. 最后,显示图表: ```python chart_view.show() ``` 以上就是使用PyQt5的QChart读取Excel文件的简单示例。需要注意的是,读取Excel文件需要安装openpyxl库,并将Excel文件保存在当前工作目录
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值