將matplotlib繪圖嵌入pyqt的方法示例
我的終極整理,供參考
# coding:utf-8
import matplotlib
# 使用 matplotlib中的FigureCanvas (在使用 Qt5 Backends中 FigureCanvas繼承自QtWidgets.QWidget)
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QDialog, QPushButton, QVBoxLayout
import matplotlib.pyplot as plt
import numpy as np
import sys
"""學(xué)好pyplot API和面向?qū)ο?API搞定matplotlib繪圖顯示在GUI界面上"""
class Main_window(QDialog):
def __init__(self):
super().__init__()
# 三步走,定Figure,定Axes,定FigureCanvas
# 1 直接一段代碼搞定figure和axes
self.figure, (self.ax1, self.ax2) = plt.subplots(figsize=(13, 3), ncols=2)
# 2 先創(chuàng)建figure再創(chuàng)建axes
# 2.1 用plt.figure() / Figure() 創(chuàng)建figure, 推薦前者
self.figure = plt.figure(figsize=(5,3), facecolor='#FFD7C4')
# self.figure = Figure(figsize=(5,3), facecolor='#FFD7C4')
# 2.2 用plt.subplots() / plt.add_subplot() 創(chuàng)建axes, 推薦前者
(self.ax1, self.ax2) = self.figure.subplots(1, 2)
# ax1 = self.figure.add_subplot(121)
# ax2 = self.figure.add_subplot(122)
# 3 綁定figure到canvas上
self.canvas = FigureCanvas(self.figure)
self.button_draw = QPushButton("繪圖")
self.button_draw.clicked.connect(self.Draw)
# 設(shè)置布局
layout = QVBoxLayout()
layout.addWidget(self.canvas)
layout.addWidget(self.button_draw)
self.setLayout(layout)
def Draw(self):
AgeList = ['10', '21', '12', '14', '25']
NameList = ['Tom', 'Jon', 'Alice', 'Mike', 'Mary']
# 將AgeList中的數(shù)據(jù)轉(zhuǎn)化為int類型
AgeList = list(map(int, AgeList))
# 將x,y轉(zhuǎn)化為numpy數(shù)據(jù)類型,對(duì)于matplotlib很重要
self.x = np.arange(len(NameList)) + 1
self.y = np.array(AgeList)
# tick_label后邊跟x軸上的值,(可選選項(xiàng):color后面跟柱型的顏色,width后邊跟柱體的寬度)
self.ax1.bar(range(len(NameList)), AgeList, tick_label=NameList, color='green', width=0.5)
for a, b in zip(self.x, self.y):
self.ax1.text(a-1, b, '%d' % b, ha='center', va='bottom')
plt.title("Demo")
pos = self.ax2.imshow(np.random.random((100, 100)), cmap=plt.cm.BuPu_r)
self.figure.colorbar(pos, ax=self.ax2) # 終于可以用colorbar了
self.canvas.draw()
# 運(yùn)行程序
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main_window = Main_window()
main_window.show()
app.exec()
總結(jié)就是,想要在特定的位置放matplotlib繪圖還是要用面向?qū)ο蟮腁PI,但混合使用pyplot的API可以使代碼更簡(jiǎn)單。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python繪圖庫(kù)Matplotlib的安裝
- Python利用matplotlib.pyplot繪圖時(shí)如何設(shè)置坐標(biāo)軸刻度
- python的繪圖工具matplotlib使用實(shí)例
- python matplotlib繪圖,修改坐標(biāo)軸刻度為文字的實(shí)例
- python使用matplotlib繪圖時(shí)圖例顯示問(wèn)題的解決
- Python繪圖Matplotlib之坐標(biāo)軸及刻度總結(jié)
- Python的matplotlib繪圖如何修改背景顏色的實(shí)現(xiàn)
- 完美解決Python matplotlib繪圖時(shí)漢字顯示不正常的問(wèn)題
- Python使用matplotlib簡(jiǎn)單繪圖示例
- matplotlib.pyplot繪圖顯示控制方法
相關(guān)文章
Python畫圖實(shí)現(xiàn)同一結(jié)點(diǎn)多個(gè)柱狀圖的示例
今天小編就為大家分享一篇Python畫圖實(shí)現(xiàn)同一結(jié)點(diǎn)多個(gè)柱狀圖的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
python生成器和yield關(guān)鍵字(完整代碼)
這篇文章主要介紹了python生成器和yield關(guān)鍵字,文章主要附上完整的代碼及些許的解釋說(shuō)明,需要的小伙伴可以參考一下2022-01-01
Python 經(jīng)典算法100及解析(小結(jié))
這篇文章主要介紹了Python 經(jīng)典算法100及解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Python3實(shí)現(xiàn)打格點(diǎn)算法的GPU加速實(shí)例詳解
這篇文章主要給大家介紹了關(guān)于Python3實(shí)現(xiàn)打格點(diǎn)算法的GPU加速的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-09-09
matlab調(diào)用python的各種方法舉例子詳解
為了發(fā)揮matlab的繪圖優(yōu)勢(shì)+原先python寫好的功能組合方式,下面這篇文章主要給大家介紹了關(guān)于matlab調(diào)用python的各種方法,需要的朋友可以參考下2023-09-09
Python中文分詞庫(kù)jieba(結(jié)巴分詞)詳細(xì)使用介紹
這篇文章主要介紹了Python中文分詞庫(kù)jieba(結(jié)巴分詞)提取詞,加載詞,修改詞頻,定義詞庫(kù)詳細(xì)使用介紹,需要的朋友可以參考下2022-04-04
Python?內(nèi)置logging?使用詳細(xì)介紹
提供日志記錄的接口和眾多處理模塊,供用戶存儲(chǔ)各種格式的日志,幫助調(diào)試程序或者記錄程序運(yùn)行過(guò)程中的輸出信息,這篇文章主要介紹了Python?內(nèi)置logging?使用講解,需要的朋友可以參考下2022-07-07
詳解python實(shí)現(xiàn)簡(jiǎn)單區(qū)塊鏈結(jié)構(gòu)
區(qū)塊鏈?zhǔn)且环N數(shù)據(jù)結(jié)構(gòu),也是一個(gè)分布式數(shù)據(jù)庫(kù)。這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單區(qū)塊鏈結(jié)構(gòu)的相關(guān)知識(shí),需要的朋友可以參考下2021-04-04

