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

在pyqt5中展示pyecharts生成的圖像問題

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

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

技術(shù)背景

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

環(huán)境依賴

這里主要依賴于pyecharts和pyqt5這兩個(gè)庫,但是由于pyqt5在5.10.1版本前后經(jīng)歷了比較大的變革,建議是安裝最新版本的pyqt5,然后額外安裝一個(gè)QtWebEngineWidgets的組件(若運(yùn)行如下程序沒有任何報(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來生成一系列的隨機(jī)數(shù),然后排序后再進(jìn)行繪圖,繪圖時(shí)采用的pyecharts的Scatter形式散點(diǎn)圖。在pyecharts中配置散點(diǎn)圖的參數(shù)時(shí),主要方法是調(diào)用Scatter中的函數(shù)來進(jìn)行構(gòu)造,比如我們常用的一些窗口工具,區(qū)域縮放等功能,就可以在Scatter中添加一個(gè)toolbox來實(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)頁另存為圖像的功能、區(qū)域縮放的功能,以及返回操作的功能。在通過pyecharts構(gòu)造了圖層之后,需要通過:

render("/tmp/scatter.html")

的方法將生成的效果圖保存成一個(gè)本地的html文件。最后通過pyqt中的圖層中導(dǎo)入網(wǎng)頁,實(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()
        # 打開本地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_())

打開界面效果如下圖所示:

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

總結(jié)概要

本文通過一個(gè)實(shí)際的散點(diǎn)圖案例,展示了如何使用pyqt5嵌套一個(gè)pyecharts圖層的方法,通過這個(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/

打賞專用鏈接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

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

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

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

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

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

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

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

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

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

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

    今天與大家一起分享使用Python來發(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)過程詳解

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

    這篇文章主要介紹了Python守護(hù)進(jìn)程實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(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)論

平陆县| 白河县| 慈溪市| 通州区| 黄山市| 基隆市| 仙桃市| 论坛| 镇安县| 河池市| 陵水| 安福县| 正宁县| 望江县| 五河县| 德化县| 平顶山市| 马关县| 射阳县| 仙桃市| 盐亭县| 丰台区| 东丰县| 青浦区| 随州市| 土默特右旗| 辽宁省| 牟定县| 蓬安县| 南岸区| 当阳市| 松溪县| 牙克石市| 娱乐| 安图县| 迭部县| 榆树市| 南平市| 盐边县| 鲁甸县| 平和县|