最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在pyqt5中展示pyecharts生成的圖像問(wèn)題

 更新時(shí)間:2022年01月16日 11:26:24   作者:DECHIN  
本文通過(guò)一個(gè)實(shí)際的散點(diǎn)圖案例,展示了如何使用pyqt5嵌套一個(gè)pyecharts圖層的方法,通過(guò)這個(gè)技巧,可以在pyqt5的框架中也實(shí)現(xiàn)精美的數(shù)據(jù)可視化的功能模塊,感興趣的朋友一起看看吧

本文通過(guò)一個(gè)實(shí)際的散點(diǎn)圖案例,展示了如何使用pyqt5嵌套一個(gè)pyecharts圖層的方法,通過(guò)這個(gè)技巧,可以在pyqt5的框架中也實(shí)現(xiàn)精美的數(shù)據(jù)可視化的功能模塊。

技術(shù)背景

雖然現(xiàn)在很少有人用python去做一些圖形化的界面,但是不得不說(shuō)我們?cè)谌粘4蟛糠值能浖褂弥卸歼€是有可視化與交互這樣的需求的。因此pyqt5作為一個(gè)主流的python的GUI框架地位是非常重要的,也是一個(gè)非常重要的技能。而pyecharts是相當(dāng)于echarts的python版本,可以比較方便的制作一些非常精美的可視化圖片,因?yàn)樯傻囊话闶莌tml格式的,所以對(duì)于平臺(tái)的可遷移性相對(duì)較好。這里我們主要探索一下在pyqt5制作出來(lái)的界面中集成一個(gè)pyecharts生成的頁(yè)面,效果圖如下所示:

環(huán)境依賴(lài)

這里主要依賴(lài)于pyecharts和pyqt5這兩個(gè)庫(kù),但是由于pyqt5在5.10.1版本前后經(jīng)歷了比較大的變革,建議是安裝最新版本的pyqt5,然后額外安裝一個(gè)QtWebEngineWidgets的組件(若運(yùn)行如下程序沒(méi)有任何報(bào)錯(cuò)的話就不需要裝):

$ python3 -m pip show pyecharts
Name: pyecharts
Version: 1.9.1
Summary: Python options, make charting easier
Home-page: https://github.com/pyecharts/pyecharts
Author: chenjiandongx
Author-email: chenjiandongx@qq.com
License: MIT
Location: /home/dechin/miniconda3/lib/python3.9/site-packages
Requires: jinja2, prettytable, simplejson
Required-by:
$ python3 -m pip show pyqt5
Name: PyQt5
Version: 5.15.6
Summary: Python bindings for the Qt cross platform application toolkit
Home-page: https://www.riverbankcomputing.com/software/pyqt/
Author: Riverbank Computing Limited
Author-email: info@riverbankcomputing.com
License: GPL v3
Location: /home/dechin/miniconda3/lib/python3.9/site-packages
Requires: PyQt5-Qt5, PyQt5-sip
Required-by: PyQtWebEngine

部分代碼解析

這里我們僅僅摘取一小部分的代碼進(jìn)行解析,該示例也是從網(wǎng)上找的一個(gè)框架做的修改。首先是數(shù)據(jù)生成的模塊:

import numpy as np
nums = 200
data = np.random.random((nums,2))
data = np.sort(data)
x_data = data[:,0]
y_data = data[:,1]

這里使用numpy來(lái)生成一系列的隨機(jī)數(shù),然后排序后再進(jìn)行繪圖,繪圖時(shí)采用的pyecharts的Scatter形式散點(diǎn)圖。在pyecharts中配置散點(diǎn)圖的參數(shù)時(shí),主要方法是調(diào)用Scatter中的函數(shù)來(lái)進(jìn)行構(gòu)造,比如我們常用的一些窗口工具,區(qū)域縮放等功能,就可以在Scatter中添加一個(gè)toolbox來(lái)實(shí)現(xiàn):

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]
                        ),
                    )
                )

這個(gè)toolbox中主要實(shí)現(xiàn)了網(wǎng)頁(yè)另存為圖像的功能、區(qū)域縮放的功能,以及返回操作的功能。在通過(guò)pyecharts構(gòu)造了圖層之后,需要通過(guò):

render("/tmp/scatter.html")

的方法將生成的效果圖保存成一個(gè)本地的html文件。最后通過(guò)pyqt中的圖層中導(dǎo)入網(wǎng)頁(yè),實(shí)現(xiàn)圖像的展示效果:

self.mainhboxLayout = QHBoxLayout(self)
self.frame = QFrame(self)
self.mainhboxLayout.addWidget(self.frame)
self.hboxLayout = QHBoxLayout(self.frame)
self.myHtml = QWebEngineView()
self.myHtml.load(QUrl("file:////tmp/scatter.html"))
self.hboxLayout.addWidget(self.myHtml)
self.setLayout(self.mainhboxLayout)

總體代碼與展示效果

總體可運(yùn)行的代碼如下所示:

import pyecharts.options as opts
from pyecharts.charts import Scatter
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QFrame
from PyQt5.QtWebEngineWidgets import QWebEngineView
import sys
import numpy as np
class Stacked(QWidget):
    def __init__(self):
        super(Stacked, self).__init__()
        self.initData()
        self.initUI()
        self.mainLayout()
    def initUI(self):
        self.setGeometry(400, 400, 800, 600)
        self.setWindowTitle(" ")
    def initData(self):
        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(
                series_name="",
                y_axis=y_data,
                symbol_size=20,
                label_opts=opts.LabelOpts(is_show=False),
            )
                .set_series_opts()
                .set_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=False),
                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]
                        ),
                    )
                )
            )
                .render("/tmp/scatter.html")
        )
    def mainLayout(self):
        self.mainhboxLayout = QHBoxLayout(self)
        self.frame = QFrame(self)
        self.mainhboxLayout.addWidget(self.frame)
        self.hboxLayout = QHBoxLayout(self.frame)
        self.myHtml = QWebEngineView()
        # 打開(kāi)本地html文件
        self.myHtml.load(QUrl("file:////tmp/scatter.html"))
        self.hboxLayout.addWidget(self.myHtml)
        self.setLayout(self.mainhboxLayout)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Stacked()
    ex.show()
    sys.exit(app.exec_())

打開(kāi)界面效果如下圖所示:

通過(guò)點(diǎn)擊區(qū)域縮放的功能按鈕,可以在圖上選取一部分的區(qū)域進(jìn)行更加細(xì)致的展示,并且具有單步返回和一步復(fù)原的功能按鈕。選取一部分之后的展示效果如下圖所示:

總結(jié)概要

本文通過(guò)一個(gè)實(shí)際的散點(diǎn)圖案例,展示了如何使用pyqt5嵌套一個(gè)pyecharts圖層的方法,通過(guò)這個(gè)技巧,可以在pyqt5的框架中也實(shí)現(xiàn)精美的數(shù)據(jù)可視化的功能模塊。

版權(quán)聲明

本文首發(fā)鏈接為:https://www.cnblogs.com/dechinphy/p/pyqtecharts.html

作者ID:DechinPhy

更多原著文章請(qǐng)參考:https://www.cnblogs.com/dechinphy/

打賞專(zhuān)用鏈接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

騰訊云專(zhuān)欄同步:https://cloud.tencent.com/developer/column/91958

參考鏈接https://blog.csdn.net/weixin_38416696/article/details/94003119 “留一手”加劇內(nèi)卷,“講不清”浪費(fèi)時(shí)間。

到此這篇關(guān)于在pyqt5中展示pyecharts生成的圖像的文章就介紹到這了,更多相關(guān)pyqt5展示pyecharts生成的圖像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python密碼學(xué)RSA密碼加密教程

    python密碼學(xué)RSA密碼加密教程

    這篇文章主要為大家介紹了python密碼學(xué)RSA密碼加密教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python中的閉包

    Python中的閉包

    這篇文章主要介紹了Python中的閉包,閉包在函數(shù)中提出的概念,簡(jiǎn)單來(lái)說(shuō)就是一個(gè)函數(shù)定義中引用了函數(shù)外定義的變量,并且該函數(shù)可以在其定義環(huán)境外被執(zhí)行。這樣的一個(gè)函數(shù)我們稱(chēng)之為閉包,下面我們一起來(lái)看看文章內(nèi)容的具體介紹
    2021-11-11
  • 關(guān)于Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果的問(wèn)題

    關(guān)于Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果的問(wèn)題

    這篇文章主要介紹了Python?Selenium自動(dòng)化導(dǎo)出新版WOS(web?of?science)檢索結(jié)果,本代碼屬于半自動(dòng)化導(dǎo)出,考慮到開(kāi)發(fā)效率等因素,有兩處在首次導(dǎo)出時(shí)需要手動(dòng)操作,具體實(shí)現(xiàn)過(guò)程跟隨小編一起看看吧
    2022-01-01
  • Python使用PIL庫(kù)拼接圖片的詳細(xì)教程

    Python使用PIL庫(kù)拼接圖片的詳細(xì)教程

    在圖像處理中,拼接圖片是一項(xiàng)常見(jiàn)的任務(wù),無(wú)論是為了創(chuàng)建全景圖、合并多張圖片,還是為了展示對(duì)比,拼接圖片都能帶來(lái)很大的便利,Python的Pillow庫(kù)(PIL的一個(gè)分支)提供了強(qiáng)大的圖像處理功能,包括圖片的拼接,下面是一個(gè)詳細(xì)的教程,需要的朋友可以參考下
    2024-12-12
  • python實(shí)現(xiàn)2014火車(chē)票查詢(xún)代碼分享

    python實(shí)現(xiàn)2014火車(chē)票查詢(xún)代碼分享

    學(xué)習(xí)習(xí)PYTHON開(kāi)始,實(shí)現(xiàn)了一個(gè)火車(chē)票查詢(xún)的小功能,希望能幫大家買(mǎi)到回家的票
    2014-01-01
  • Python3實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換成PDF文檔和圖片

    Python3實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換成PDF文檔和圖片

    pdfkit是把 HTML+CSS 格式的文件轉(zhuǎn)換成 PDF 的一種工具,它是 wkhtmltopdf 這個(gè)工具包的 python 封裝。本文將利用pdfkit實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換成PDF文檔和圖片效果,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • 使用Python發(fā)現(xiàn)隱藏的wifi

    使用Python發(fā)現(xiàn)隱藏的wifi

    今天與大家一起分享使用Python來(lái)發(fā)現(xiàn)隱藏的wifi,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • pandas中的Timestamp只保留日期不顯示時(shí)間

    pandas中的Timestamp只保留日期不顯示時(shí)間

    這篇文章主要介紹了pandas中的Timestamp只保留日期不顯示時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python守護(hù)進(jìn)程實(shí)現(xiàn)過(guò)程詳解

    Python守護(hù)進(jìn)程實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了Python守護(hù)進(jìn)程實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python?隊(duì)列Queue和PriorityQueue解析

    Python?隊(duì)列Queue和PriorityQueue解析

    這篇文章主要介紹了Python?隊(duì)列Queue和PriorityQueue,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評(píng)論

罗江县| 友谊县| 若尔盖县| 玛多县| 田阳县| 探索| 吉林市| 炎陵县| 嘉义县| 鄂伦春自治旗| 广河县| 曲麻莱县| 广宗县| 乌审旗| 唐海县| 陵水| 星座| 景泰县| 土默特右旗| 太仆寺旗| 肥东县| 蒙城县| 秦皇岛市| 合作市| 邻水| 大新县| 南安市| 斗六市| 孟津县| 玉田县| 资兴市| 太谷县| 彭州市| 济宁市| 锡林浩特市| 古交市| 冷水江市| 黑龙江省| 武胜县| 环江| 邓州市|