成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

matplotlib嵌入到pyqt中

z2xy / 994人閱讀

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

在pyqt5中使用matplotlib 前言

雖然,qt中也提供了繪圖函數(shù),但對于初學(xué)者并不是很容易掌握,眾所周知,matplot提供了簡單,易用,強(qiáng)大的繪圖函數(shù),結(jié)合mumpy基本可以達(dá)到matlb中的繪圖體驗(yàn),并且比matlab更加具有擴(kuò)展性,也更自由。通過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""")

代碼解析

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

寫在最后

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

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42400.html

相關(guān)文章

  • py各種第三方庫分類

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

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

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

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

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

    testbird 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<