欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在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生成的頁(yè)面,效果圖如下所示:

環(huán)境依賴

這里主要依賴于pyecharts和pyqt5這兩個(gè)庫(kù),但是由于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)頁(yè)另存為圖像的功能、區(qū)域縮放的功能,以及返回操作的功能。在通過pyecharts構(gòu)造了圖層之后,需要通過:

render("/tmp/scatter.html")

的方法將生成的效果圖保存成一個(gè)本地的html文件。最后通過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()
        # 打開本地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中tqdm使用,對(duì)于for和while下的兩種不同情況問題

    python中tqdm使用,對(duì)于for和while下的兩種不同情況問題

    這篇文章主要介紹了python中tqdm使用,對(duì)于for和while下的兩種不同情況問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python學(xué)習(xí)之圖片濾鏡效果的實(shí)現(xiàn)

    Python學(xué)習(xí)之圖片濾鏡效果的實(shí)現(xiàn)

    濾鏡效果是圖像處理中常用的一種技術(shù),可以用來增強(qiáng)圖像的視覺效果,實(shí)現(xiàn)不同的效果,本文就來利用Python中的Image模塊實(shí)現(xiàn)常見的幾個(gè)圖片濾鏡吧
    2023-05-05
  • Pandas條件篩選與組合篩選的使用

    Pandas條件篩選與組合篩選的使用

    本文主要介紹了Pandas條件篩選與組合篩選的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • pandas溫差查詢案例的實(shí)現(xiàn)

    pandas溫差查詢案例的實(shí)現(xiàn)

    本文主要介紹了pandas溫差查詢案例的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 基于python的字節(jié)編譯詳解

    基于python的字節(jié)編譯詳解

    下面小編就為大家?guī)硪黄趐ython的字節(jié)編譯詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳解Python中with語(yǔ)句的用法

    詳解Python中with語(yǔ)句的用法

    這篇文章主要介紹了Python中with語(yǔ)句的用法,with語(yǔ)句的使用是Python學(xué)習(xí)過程當(dāng)中的基礎(chǔ)知識(shí),本文來自于IBM官方技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • tensorflow對(duì)圖像進(jìn)行拼接的例子

    tensorflow對(duì)圖像進(jìn)行拼接的例子

    今天小編就為大家分享一篇tensorflow對(duì)圖像進(jìn)行拼接的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Django 設(shè)置多環(huán)境配置文件載入問題

    Django 設(shè)置多環(huán)境配置文件載入問題

    這篇文章主要介紹了Django 設(shè)置多環(huán)境配置文件載入問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python GUI庫(kù)圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實(shí)例

    python GUI庫(kù)圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實(shí)例

    這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5切換按鈕控件QPushButton詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下
    2020-02-02
  • 淺談python已知元素,獲取元素索引(numpy,pandas)

    淺談python已知元素,獲取元素索引(numpy,pandas)

    今天小編就為大家分享一篇淺談python已知元素,獲取元素索引(numpy,pandas),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11

最新評(píng)論