成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

matplotlib嵌入到pyqt中

z2xy / 1027人閱讀

摘要:坐標(biāo)軸,標(biāo)題,標(biāo)簽,圖形樣式餅圖,柱狀圖,折線圖等等等的設(shè)置都通過(guò)的成員函數(shù)來(lái)設(shè)置完成。寫(xiě)在最后因?yàn)樽陨砟芰τ邢?,也不是科班出身,都是自學(xué)的,目前還是一名學(xué)生,所以有未盡之處還請(qǐng)指正,不喜勿噴。

在pyqt5中使用matplotlib 前言

雖然,qt中也提供了繪圖函數(shù),但對(duì)于初學(xué)者并不是很容易掌握,眾所周知,matplot提供了簡(jiǎn)單,易用,強(qiáng)大的繪圖函數(shù),結(jié)合mumpy基本可以達(dá)到matlb中的繪圖體驗(yàn),并且比matlab更加具有擴(kuò)展性,也更自由。通過(guò)matplotlib提供的官方例程的修改,就可以很容易的繪制你想要的圖形,真的很強(qiáng)大。(我也是名初學(xué)者)

matplotlib,pyqt5官方例程
# 取自matplotlib 官方文檔案例

from __future__ import unicode_literals
import sys
import os
import random
import matplotlib
# Make sure that we are using QT5
matplotlib.use("Qt5Agg")

from PyQt5 import QtCore, QtWidgets
from numpy import arange, sin, pi, linspace
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure

progname = os.path.basename(sys.argv[0])
progversion = "0.1"


class MyMplCanvas(FigureCanvas):
    # 這既是一個(gè)wiget類也是一個(gè)FigureCanva

    def __init__(self, parent=None, width=5, height=4, dpi=100):
        self.fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = self.fig.add_subplot(111)

        self.compute_initial_figure()

        FigureCanvas.__init__(self, self.fig)
        self.setParent(parent)

        FigureCanvas.setSizePolicy(self,
                                   QtWidgets.QSizePolicy.Expanding,
                                   QtWidgets.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

    def compute_initial_figure(self):
        pass


class MyStaticMplCanvas(MyMplCanvas):
    """Simple canvas with a sine plot."""

    def __init__(self, *args, **kwargs):
        MyMplCanvas.__init__(self, *args, **kwargs)
        

    def compute_initial_figure(self):
        print("hello world")
        x = linspace(0, 2 * pi, 500000)
        y = sin(x)
        self.axes.cla()
        self.axes.plot(x, y)
        self.draw()


class MyDynamicMplCanvas(MyMplCanvas):
    """A canvas that updates itself every second with a new plot."""

    def __init__(self, *args, **kwargs):
        MyMplCanvas.__init__(self, *args, **kwargs)
        timer = QtCore.QTimer(self)
        
        timer.timeout.connect(self.update_figure)
        timer.start(1000)

    def compute_initial_figure(self):
        self.axes.plot([0, 1, 2, 3], [1, 2, 0, 4], "r")

    def update_figure(self):
        # Build a list of 4 random integers between 0 and 10 (both inclusive)
        l = [random.randint(0, 10) for i in range(4)]
        self.axes.cla()
        self.axes.plot([0, 1, 2, 3], l, "r")
        self.draw()


class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        self.setWindowTitle("application main window")

        self.file_menu = QtWidgets.QMenu("&File", self)
        self.file_menu.addAction("&Quit", self.fileQuit,
                                 QtCore.Qt.CTRL + QtCore.Qt.Key_Q)
        self.menuBar().addMenu(self.file_menu)

        self.help_menu = QtWidgets.QMenu("&Help", self)
        self.menuBar().addSeparator()
        self.menuBar().addMenu(self.help_menu)

        self.help_menu.addAction("&About", self.about)

        self.main_widget = QtWidgets.QWidget(self)

        l = QtWidgets.QVBoxLayout(self.main_widget)
        sc = MyStaticMplCanvas(self.main_widget, width=5, height=4, dpi=100)
        dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4, dpi=100)
        l.addWidget(sc)
        l.addWidget(dc)

        self.main_widget.setFocus()
        self.setCentralWidget(self.main_widget)

        self.statusBar().showMessage("All hail matplotlib!", 2000)

    def fileQuit(self):
        self.close()

    def closeEvent(self, ce):
        self.fileQuit()

    def about(self):
        QtWidgets.QMessageBox.about(self, "About",
                                    """embedding_in_qt5.py example
Copyright 2005 Florent Rougon, 2006 Darren Dale, 2015 Jens H Nielsen

This program is a simple example of a Qt5 application embedding matplotlib
canvases.

It may be used and modified with no restriction; raw copies as well as
modified versions may be distributed without limitation.

This is modified from the embedding in qt4 example to show the difference
between qt4 and qt5""")

代碼解析

通過(guò)matplotlib.use("Qt5Agg"),這行代碼聲明matplotlib將要嵌入到pyqt5中,同樣通過(guò)這句,也可以聲明將matplotlib嵌入到其他的,gui界面中去,然后通過(guò)繼承FigureCanvas類來(lái)獲得一個(gè)即使widget的類也是FigureCanva類的類,然后通過(guò)self.fig成員,生成一個(gè)繪圖類,并由其創(chuàng)建一個(gè)繪圖布局,返回一個(gè)self.axes來(lái)管理繪圖布局中的內(nèi)容。坐標(biāo)軸,標(biāo)題,標(biāo)簽,圖形樣式(餅圖,柱狀圖,折線圖等)等等的設(shè)置都通過(guò)self.axes的成員函數(shù)來(lái)設(shè)置完成。剛開(kāi)始的使用還是比較云里霧里的,現(xiàn)在就差不多了。我對(duì)官方例程做了些修改,具體的代碼,可以到我的GitHub倉(cāng)儲(chǔ)上查看Qt-learn-pyqt5-matplotlib里面也有一些其他的例子,應(yīng)該還會(huì)不定期的更新,有興趣也可以看看。下面只需要對(duì)這幾個(gè)類進(jìn)行實(shí)例話,開(kāi)啟qt的事件循環(huán)就可以看到界面了,具體的可以看我的github代碼,這里就不多說(shuō)了。

寫(xiě)在最后

因?yàn)樽陨砟芰τ邢蓿膊皇强瓢喑錾?,都是自學(xué)的,目前還是一名學(xué)生,所以有未盡之處還請(qǐng)指正,不喜勿噴。謝謝。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/42400.html

相關(guān)文章

  • py各種第三方庫(kù)分類

    摘要:庫(kù)可以完成圖像歸檔和圖形處理兩方面功能需求。是一個(gè)強(qiáng)大的圖像和視頻工作庫(kù)。它提供了多種程序接口,支持跨平臺(tái)包括移動(dòng)端應(yīng)用。除了對(duì)圖像進(jìn)行基本處理外,還支持圖像數(shù)據(jù)建模,并預(yù)制了多種圖像識(shí)別引擎,如人臉識(shí)別。計(jì)算機(jī)視覺(jué)工具包 #整理一下各種第三方庫(kù)的大體分類,考計(jì)算機(jī)py二級(jí)的可能會(huì)用...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • Python--matplotlib繪圖可視化知識(shí)點(diǎn)整理

    摘要:本文作為學(xué)習(xí)過(guò)程中對(duì)一些常用知識(shí)點(diǎn)的整理,方便查找。所有繪圖操作僅對(duì)當(dāng)前圖和當(dāng)前坐標(biāo)有效。表示把圖標(biāo)分割成的網(wǎng)格。每個(gè)對(duì)象都是一個(gè)擁有自己坐標(biāo)系統(tǒng)的繪圖區(qū)域。避免比例壓縮為橢圓數(shù)據(jù)可視化入門(mén)教程繪圖核心剖析如何調(diào)整子圖的大小 本文作為學(xué)習(xí)過(guò)程中對(duì)matplotlib一些常用知識(shí)點(diǎn)的整理,方便查找。 強(qiáng)烈推薦ipython無(wú)論你工作在什么項(xiàng)目上,IPython都是值得推薦的。利用ipyt...

    nifhlheimr 評(píng)論0 收藏0
  • 數(shù)據(jù)可視化Seaborn從零開(kāi)始學(xué)習(xí)教程(一) 風(fēng)格選擇

    摘要:簡(jiǎn)介同一樣,也是進(jìn)行數(shù)據(jù)可視化分析的重要第三方包。的五種繪圖風(fēng)格有五種的風(fēng)格,它們分別是。 作者:xiaoyu微信公眾號(hào):Python數(shù)據(jù)科學(xué)知乎:python數(shù)據(jù)分析師 最近在做幾個(gè)項(xiàng)目的數(shù)據(jù)分析,每次用到seaborn進(jìn)行可視化繪圖的時(shí)候總是忘記具體操作。雖然seaborn的官方網(wǎng)站已經(jīng)詳細(xì)的介紹了使用方法,但是畢竟是英文,而且查找不是很方便。因此博主想從零開(kāi)始將seaborn學(xué)...

    testbird 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<