在pyside中显示pyecharts图形

在pyside中显示pyecharts图形

import sys
from PySide2.QtWidgets import *
from PySide2.QtGui import *
from PySide2.QtCore import QDate, QObject, Signal, Slot
from PySide2.QtWebEngineWidgets import QWebEngineView
from pyecharts.charts import Bar
from pyecharts.faker import Faker
import pyecharts.options as opts
class stats(QWidget):
def __init__(self):
super(stats, self).__init__()
self.initUI()
def initUI(self): # 绘图pyecharts
self.setWindowTitle("示例1")
self.setGeometry(100, 100, 1240, 800)
layout = QVBoxLayout()
self.bro = QWebEngineView()
self.bro.setFixedWidth(self.width())
self.bro.setFixedHeight(self.height())
self.button = QPushButton('绘图')
self.button2 = QPushButton('保存')
layout1 = QHBoxLayout()
layout1.addWidget(self.button)
layout1.addWidget(self.button2)
layout.addLayout(layout1)
layout.addWidget(self.bro)
self.setLayout(layout)
self.button.clicked.connect(self.DrawPic)
self.button2.clicked.connect(self.DrawPic)
self.button2.setEnabled(False)
def DrawPic(self, cs):
# print(self.sender().text())
wd = str(int(self.bro.width())*0.95) + 'px'
gd = str(int(self.bro.height()*0.95)) + 'px'
c = Bar({"width": wd, "height": gd, 'renderer': 'svg'})
if self.sender().text() != '保存':
c.add_xaxis(Faker.days_attrs).add_yaxis(
"ABC", Faker.days_values).set_global_opts(
title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
datazoom_opts=opts.DataZoomOpts(), )
c.set_global_opts(
toolbox_opts=opts.ToolboxOpts(is_show=True, orient="vertical", pos_left="95%",
feature=opts.ToolBoxFeatureOpts(
save_as_image=opts.ToolBoxFeatureSaveAsImageOpts(type_="jpeg", title="保存为jpeg", pixel_ratio=2))),
title_opts=opts.TitleOpts(title="行情数据",
title_textstyle_opts=opts.TextStyleOpts(font_family='Times New Roman', font_size=20)),
legend_opts=opts.LegendOpts(is_show=True,
textstyle_opts=opts.TextStyleOpts(font_family='Times New Roman', font_size=18)),
datazoom_opts=opts.DataZoomOpts(is_show=True, range_start=0, range_end=100),
xaxis_opts=opts.AxisOpts(name="日期", offset=20, axislabel_opts=opts.LabelOpts(font_size=14, rotate=-15)),
yaxis_opts=opts.AxisOpts(type_="value", name="元/块", offset=10, min_='dataMin', max_='dataMax',
splitline_opts=opts.SplitLineOpts(is_show=True),
axislabel_opts=opts.LabelOpts(font_size=14, distance=15)),
tooltip_opts=opts.TooltipOpts(trigger="axis", trigger_on='mousemove', axis_pointer_type="cross", ))
self.bro.setHtml(c.render_embed())
self.button2.setEnabled(True)
else:
pathandfilename = sys.argv
pathandfilename = pathandfilename[0][::-1].split('/', 1)[1][::-1] + '/' +'图形导出_' + str(
QDate.currentDate().toString('yyyy_MM_dd')) + '.html'
try:
c.render(pathandfilename)
except:
QMessageBox.warning(None, "提示框", " 未导出成功! 你欲导出的文件 " + pathandfilename + '是否已经打开?')
finally:
QMessageBox.information(None, "提示框", " 导出成功! 你导出的文件名是: " + pathandfilename)
def main(this):
app = QApplication(sys.argv)
main = this()
main.show()
exit(app.exec_())
if __name__ == "__main__":
main(stats)
posted @   冀未然  阅读(176)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示