本文通过一个实际的散点图案例,展示了如何使用pyqt5嵌套一个pyecharts图层的方法,通过这个技巧,可以在pyqt5的框架中也实现精美的数据可视化的功能模块。
虽然现在很少有人用上海立信金融学院python去做一些图形化的界面,但是不得不说我们在日常大部分的软件使用中都还是有可视化与交互这样的需求的。因此pyqt5作为一个主流的python的gui框架地位是非常重要的,也是一个非常重要的技能。而pyecharts是相当于echarts的python版本,可以比较方便的制作一些非常精美的可视化图片,因为生成的一般是html格式的,所以对于平台的可迁移性相对较好。这里我们主要探索一下在pyqt5制作出来的界面中集成一个pyecharts生成的页面,效果图如下所示:
这里主要依赖于pyecharts和pyqt5这两个库,但是由于pyqt5在5.10.1版本前后经历了比较大的变革,建议是安装最新版本的pyqt5,然后额外安装一个qtwebenginewidgets的组件(若运行如下程序没有任何报错的话就不需要装):
$ python3 -m pip show pyechartsname: pyechartsversion: 1.9.1summary: python options, make charting easierhome-page: https://github.com/pyecharts/pyechartsauthor: chenjiandongxauthor-email: chenjiandongx@qq.comlicen: mitlocation: /home/dechin/miniconda3/lib/python3.9/site-packagesrequires: jinja2, prettytable, simplejsonrequired-by:$ python3 -m pip show pyqt5name: pyqt5version: 5.15.6summary: python bindings for the qt cross platform application toolkithome-page: https://www.riverbankcomputing.com/software/pyqt/author: riverbank computing limitedauthor-email: info@riverbankcomputing.comlicen: gpl v3location: /home/dechin/miniconda3/lib/python3.9/site-packagesrequires: pyqt5-qt5, pyqt5-siprequired-by: pyqtwebengine
这里我们仅仅摘取一小部分的代码进行解析,该示例也是从网上找的一个框架做的修改。首先是数据生成的模块:
import numpy as npnums = 200data = np.random.random((nums,2))data = np.sort(data)x_data = data[:,0]y_data = data[:,1]
这里使用numpy来生成一系列的随机数,然后排序后再进行绘图,绘图时采用的pyecharts的scatter形式散点图。在pyecharts中配置散点图的参数时,主要方法是调用scatter中的函数来进行构造,比如我们常用的一些窗口工具,区域缩放等功能,就可以在scatter中添加一个toolbox来实现:
toolbox_opts=opts.toolboxopts( is_show=true, orient="horizontal", feature=opts.toolboxfeatureopts( save_as_image=opts.toolboxfeaturesaveasimageopts(type_="jpeg", title="保存为jpeg", pixel_ratio=2), restore=opts.toolboxfeaturerestoreopts(), data_zoom=opts.toolboxfeaturedatazoomopts( xaxis_index=[0], 如何选拔人才 yaxis_index=[0] ), ) )
这个toolbox中主要实现了网页另存为图像的功能、区域缩放的功能,以及返回操作的功能。在通过pyecharts构造了图层之后,需要通过:
render("/tmp/scatter.html")
的方法将生成的效果图保存成一个本地的html文件。最后通过pyqt中的图层中导入网页,实现图像的展示效果:
lf.mainhboxlayout = qhboxlayout(lf)lf.frame = qframe(lf)lf.mainhboxlayout.addwidget(lf.frame)lf.hboxlayout = qhboxlayout(lf.frame)lf.myhtml = qwebengineview()lf.myhtml.load(qurl("file:////tmp/scatter.html"))lf.hboxlayout.addwidget(lf.myhtml)lf.tlayout(lf.mainhboxlayout)
总体代码与展示效果
总体可运行的代码如下所示:
import pyecharts.options as optsfrom pyecharts.charts import scatterfrom pyqt5.qtcore import qurlfrom pyqt5.qtwidgets import qapplication, qwidget, qhboxlayout, qframefrom pyqt5.qtwebenginewidgets import qwebengineviewimport sysimport numpy as npclass stacked(qwidget): def __init__(lf): super(stacked, lf).__init__() lf.initdata() lf.initui() lf.mainlayout() def initui(lf): lf.tgeometry(400, 400, 800, 600) lf.twindowtitle(" ") def initdata(lf): nums = 200 data = np.random.random((nums,2)) data = np.sort(data) x_data = data[:,0] y_data = data[:,1] ( scatter(init_opts=opts.initopts(width="1600px", height="1000px")) .add_xaxis(xaxis_data=x_data) .add_yaxis( ries_name="", y_axis=y_data, symbol_size=20, label_opts=opts.labelopts(is_show=fal), ) .t_ries_opts() .t_global_opts( xaxis_opts=opts.axisopts( type_="value", splitline_opts=opts.splitlineopts(is_show=true) ), yaxis_opts=opts.axisopts( type_="value", axistick_opts=opts.axistickopts(is_show=true), splitline_opts=opts.splitlineopts(is_show=true), ), tooltip_opts=opts.tooltipopts(is_show=fal), toolbox_opts=opts.toolboxopts( is_show=true, orient="horizontal", feature=opts.toolboxfeatureopts( sav面的做法e_as_image=opts.toolboxfeaturesaveasimageopts(type_="jpeg", title="保存为jpeg", pixel_ratio=2), restore=opts.toolboxfeaturerestoreopts(), data_zoom=opts.toolboxfeaturedatazoomopts( xaxis_index=[0], yaxis_index=[0] ), ) ) ) .re治疗慢性荨麻疹偏方nder("/tmp/scatter.html") ) def mainlayout(lf): lf.mainhboxlayout = qhboxlayout(lf) lf.frame = qframe(lf) lf.mainhboxlayout.addwidget(lf.frame) lf.hboxlayout = qhboxlayout(lf.frame) lf.myhtml = qwebengineview() # 打开本地html文件 lf.myhtml.load(qurl("file:////tmp/scatter.html")) lf.hboxlayout.addwidget(lf.myhtml) lf.tlayout(lf.mainhboxlayout)if __name__ == '__main__': app = qapplication(sys.argv) ex = stacked() ex.show() sys.exit(app.exec_())
打开界面效果如下图所示:
通过点击区域缩放的功能按钮,可以在图上选取一部分的区域进行更加细致的展示,并且具有单步返回和一步复原的功能按钮。选取一部分之后的展示效果如下图所示:
本文通过一个实际的散点图案例,展示了如何使用pyqt5嵌美容护肤视频套一个pyecharts图层的方法,通过这个技巧,可以在pyqt5的框架中也实现精美的数据可视化的功能模块。
版权声明
本文首发链接为:/d/file/titlepic/pyqtecharts.html “留一手”加剧内卷,“讲不清”浪费时间。
到此这篇关于在pyqt5中展示pyecharts生成的图像的文章就介绍到这了,更多相关pyqt5展示pyecharts生成的图像内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 15:31:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/9ba3307c5a62d3aba83e9b07abe9fec5.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:在pyqt5中展示pyecharts生成的图像问题.doc
本文 PDF 下载地址:在pyqt5中展示pyecharts生成的图像问题.pdf
留言与评论(共有 0 条评论) |