国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

matplotlib嵌入到pyqt中

z2xy / 973人閱讀

摘要:坐標軸,標題,標簽,圖形樣式餅圖,柱狀圖,折線圖等等等的設置都通過的成員函數(shù)來設置完成。寫在最后因為自身能力有限,也不是科班出身,都是自學的,目前還是一名學生,所以有未盡之處還請指正,不喜勿噴。

在pyqt5中使用matplotlib 前言

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

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

寫在最后

因為自身能力有限,也不是科班出身,都是自學的,目前還是一名學生,所以有未盡之處還請指正,不喜勿噴。謝謝。

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42400.html

相關文章

  • py各種第三方庫分類

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

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

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

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

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

    testbird 評論0 收藏0

發(fā)表評論

0條評論

z2xy

|高級講師

TA的文章

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