相关文件
想学Python的小伙伴可以关注小编的公众号【Python日志】
有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!!
需要源码的小伙伴可以在公众号回复数据图表生成器
Python源码、问题解答学习交流群:773162165
效果展示
需求
手动配置X轴、Y轴、图表标题等参数自动通过Pyecharts模块生成可视化的html数据图表,并将浏览器图表展示到UI界面上。
制作出图表后的效果展示如下:
另外,生成后的图表结果会使用 html 的形式保存下来。
代码实现
导入 UI 界面相关的 PyQt5 第三方模块库。
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
若是使用PyQt5的版本是5.10.1以上,则需要单独安装一下PyQtWebEngine,说是QtWebEngineWidgets模块被新版本移除了。执行一下下面安装单独安装一下PyQtWebEngine就OK了。
pip install PyQtWebEngine
导入 Web 浏览器引擎的支持。
from PyQt5.QtWebEngineWidgets import QWebEngineView
应用其他的相关模块导入。
import sys # 应用操作库
import os
from datetime import datetime
from pyecharts.charts import * # 图表设置展示库
from pyecharts import options # 图标参数配置库
主要的代码块实现过程如下:
class DataVisual(QWidget):
def __init__(self):
super(DataVisual, self).__init__()
self.cwd = os.getcwd() # 获取当前路径
self.init_ui()
def init_ui(self):
self.setWindowTitle('数据图表生成器')
self.setWindowIcon(QIcon('数据.ico'))
self.brower = QWebEngineView()
self.brower.setMinimumWidth(800)
self.brower.setMaximumWidth(1400)
self.brower.setUrl(QUrl(''))
form = QFormLayout()
'''折线图/柱状图控件开始'''
self.selected_label = QLabel()
self.selected_label.setText('设置图表类型:')
self.selected_cobox = QComboBox()
self.selected_cobox.addItems(['Bar(柱状图/条形图)', 'Line(折线/面积图)', 'Pie(饼图)'])
self.selected_cobox.currentIndexChanged.connect(self.selected_cobox_change)
self.title_label = QLabel()
self.title_label.setText('设置标题:')
self.title_text = QLineEdit()
self.title_text.setPlaceholderText('请输入图表标题(最大长度10)')
self.title_text.setMaxLength(10)
self.subtitle_label = QLabel()
self.subtitle_label.setText('设置副标题:')
self.subtitle_text = QLineEdit()
self.subtitle_text.setPlaceholderText('请输入图表副标题(最大长度20)')
self.title_text.setMaxLength(20)
self.data_label_x = QLabel()
self.data_label_x.setText('设置X轴数据:')
self.data_text_x = QLineEdit()
self.data_text_x.setPlaceholderText("湖北, 四川, 重庆, 河北, 云南")
self.data_text_x.setMaxLength(1000)
self.data_label_y1_name = QLabel()
self.data_label_y1_name.setText('设置Y1轴标签:')
self.data_text_y1_name = QLineEdit()
self.data_text_y1_name.setPlaceholderText("请输入Y1轴标签")
self.data_label_y1 = QLabel()
self.data_label_y1.setText('设置Y1轴数据:')
self.data_text_y1 = QLineEdit()
self.data_text_y1.setPlaceholderText("34500, 3000, 3218, 2890, 50023")
self.data_text_y1.setMaxLength(1000)
self.data_label_y2_name = QLabel()
self.data_label_y2_name.setText('设置Y2轴标签:')
self.