Python之Matlibplot畫圖功能演示過程
更新時(shí)間:2023年09月13日 09:04:05 作者:大魚-瓶邪
這篇文章主要介紹了Python之Matlibplot畫圖功能演示過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
Python Matlibplot畫圖功能演示
Matplotlib 是 Python 的一個(gè)繪圖庫。
它包含了大量的工具,你可以使用這些工具創(chuàng)建各種圖形,包括簡單的散點(diǎn)圖,正弦曲線,甚至是三維圖形。
使用之前先導(dǎo)入
#!/usr/bin/env python # encoding: utf-8 """ @Company:華中科技大學(xué)電氣學(xué)院聚變與等離子研究所 @version: V1.0 @author: Victor @contact: 1650996069@qq.com or yexin@hust.edu.cn 2018--2020 @software: PyCharm @file: PlotByMatlibplot.py @time: 2018/9/16 15:18 @Desc:講解一些matlibplot的使用 """ # 導(dǎo)入相關(guān)模塊 import matplotlib.pyplot as plt import numpy as np
##############################畫一個(gè)簡單的圖形##################################### # 首先通過 np.linspace 方式生成 x, # 它包含了 50 個(gè)元素的數(shù)組,這 50 個(gè)元素均勻的分布在 [0, 2*pi] 的區(qū)間上。然后通過 np.sin(x) 生成 y。 x = np.linspace(0,2*np.pi,50) y = np.sin(x) #有了 x 和 y 數(shù)據(jù)之后,我們通過 plt.plot(x, y) 來畫出圖形,并通過 plt.show() 來顯示。 plt.plot(x,y) plt.show()
#################################在一個(gè)畫板里繪制多個(gè)圖############################ plt.plot(x, y) plt.plot(x, y**3) plt.show() #繪制出圖形之后,我們可以自己調(diào)整更多的樣式,比如顏色、點(diǎn)、線。 plt.plot(x, y, 'y*-') plt.plot(x, y**3, 'm--')#設(shè)置樣式時(shí),就是增加了一個(gè)字符串參數(shù),比如 'y*-' ,其中 y 表示黃色,* 表示 星標(biāo)的點(diǎn),- 表示實(shí)線。 plt.show()
###############################設(shè)置 figure和標(biāo)題以及其他圖列,注釋屬性###################################### # 可以認(rèn)為Matplotlib繪制的圖形都在一個(gè)默認(rèn)的 figure 中,當(dāng)然了, # 你可以自己創(chuàng)建 figure,好處就是可以控制更多的參數(shù),常見的就是控制圖形的大小,這里創(chuàng)建一個(gè) figure,設(shè)置大小為 (8, 4) plt.figure(figsize=(8, 4)) plt.plot(x, y) plt.plot(x, y*2) plt.title("cos(x) & cos(x)*2") #設(shè)置坐標(biāo)軸的刻度,范圍 plt.xlim((0, 2*np.pi)) plt.ylim((-2, 2)) plt.xlabel('X') plt.ylabel('Y')#通過 xlim 和 ylim 來設(shè)限定軸的范圍,通過 xlabel 和 ylabel 來設(shè)置軸的名稱 #我們也可以通過 xticks 和 yticks 來設(shè)置軸的刻度 #plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2)) ###設(shè)置 label 和 legend #設(shè)置 label 和 legend 的目的就是為了區(qū)分出每個(gè)數(shù)據(jù)對(duì)應(yīng)的圖形名稱。 plt.plot(x, y, label="cos(x)") plt.plot(x, -y*2, label="2cos(x)") # plt.legend() plt.legend(loc='best') #####添加注釋###### # 需要對(duì)特定的點(diǎn)進(jìn)行標(biāo)注,我們可以使用 plt.annotate 函數(shù)來實(shí)現(xiàn)。 # # 這里我們要標(biāo)注的點(diǎn)是 (x0, y0) = (π, 0)。 # # 我們也可以使用 plt.text 函數(shù)來添加注釋。 x0 = np.pi y0 = 0 # 畫出標(biāo)注點(diǎn) plt.scatter(x0, y0, s=50) plt.annotate('sin(np.pi)=%s' % y0, xy=(np.pi, 0), xycoords='data', xytext=(+30, -30), textcoords='offset points', fontsize=16, arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2")) # 對(duì)于 annotate 函數(shù)的參數(shù),做一個(gè)簡單解釋: # # 'sin(np.pi)=%s' % y0 代表標(biāo)注的內(nèi)容,可以通過字符串 %s 將 y0 的值傳入字符串; # 參數(shù) xycoords='data' 是說基于數(shù)據(jù)的值來選位置; # xytext=(+30, -30) 和 textcoords='offset points' 表示對(duì)于標(biāo)注位置的描述 和 xy 偏差值,即標(biāo)注位置是 xy 位置向右移動(dòng) 30,向下移動(dòng)30; # arrowprops 是對(duì)圖中箭頭類型和箭頭弧度的設(shè)置,需要用 dict 形式傳入。 plt.text(0.5, -0.25, "sin(np.pi) = 0", fontdict={'size': 18, 'color': 'r'}) plt.show()
畫子圖 ##############################畫一個(gè)簡單的圖形##################################### # 首先通過 np.linspace 方式生成 x, # 它包含了 50 個(gè)元素的數(shù)組,這 100 個(gè)元素均勻的分布在 [0, 50] 的區(qū)間上 x = np.linspace(0,50,100) ############################使用子圖############################################## # 將多張子圖展示在一起,可以使用 subplot() 實(shí)現(xiàn)。即在調(diào)用 plot() 函數(shù)之前需要先調(diào)用 subplot() 函數(shù)。 # 該函數(shù)的第一個(gè)參數(shù)代表子圖的總行數(shù),第二個(gè)參數(shù)代表子圖的總列數(shù),第三個(gè)參數(shù)代表活躍區(qū)域。 ax1 = plt.subplot(2, 2, 1) # (行,列,活躍區(qū)) plt.plot(x, np.sin(x), 'r') ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 與 ax1 共享y軸 plt.plot(x, 2 * np.cos(x), 'g') ax3 = plt.subplot(2, 2, 3) plt.plot(x, np.tan(x), 'b') ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 與 ax3 共享y軸 plt.plot(x, 2 * np.sin(x), 'y') #subplot(2, 2, x) 表示將圖像窗口分為 2 行 2 列。x 表示當(dāng)前子圖所在的活躍區(qū) plt.show()
############################調(diào)整子圖大小的位置################################## #上面的每個(gè)子圖的大小都是一樣的。有時(shí)候我們需要不同大小的子圖。比如將上面第一張子圖完全放置在第一行,其他的子圖都放在第二行。 ax1 = plt.subplot(2, 1, 1) # (行,列,活躍區(qū)) plt.plot(x, np.sin(x), 'r') ax2 = plt.subplot(2, 3, 4) plt.plot(x, 2 * np.sin(x), 'g') ax3 = plt.subplot(2, 3, 5, sharey=ax2) plt.plot(x, np.cos(x), 'b') ax4 = plt.subplot(2, 3, 6, sharey=ax2) plt.plot(x, 2 * np.cos(x), 'y') # plt.subplot(2, 1, 1) 將圖像窗口分為了 2 行 1 列, 當(dāng)前活躍區(qū)為 1。 # 使用 plt.subplot(2, 3, 4) 將整個(gè)圖像窗口分為 2 行 3 列, 當(dāng)前活躍區(qū)為 4。 # # 解釋下為什么活躍區(qū)為 4,因?yàn)樯弦徊街惺褂?plt.subplot(2, 1, 1) 將整個(gè)圖像窗口分為 2 行 1 列, 第1個(gè)小圖占用了第1個(gè)位置, # 也就是整個(gè)第1行. 這一步中使用 plt.subplot(2, 3, 4) 將整個(gè)圖像窗口分為 2 行 3 列, # 于是整個(gè)圖像窗口的第1行就變成了3列, 也就是成了3個(gè)位置, 于是第2行的第1個(gè)位置是整個(gè)圖像窗口的第4個(gè)位置。 plt.show()
###############散點(diǎn)圖################### k = 500 x = np.random.rand(k) y = np.random.rand(k) size = np.random.rand(k) * 50 # 生成每個(gè)點(diǎn)的大小,每個(gè)數(shù)據(jù)點(diǎn)生成控制大小的數(shù)組 size colour = np.arctan2(x, y) # 生成每個(gè)點(diǎn)的顏色大小,每個(gè)數(shù)據(jù)點(diǎn)生成控制顏色的數(shù)組 colour plt.scatter(x, y, s=size, c=colour) plt.colorbar() # 添加顏色欄 plt.show()
#####################柱狀圖############# k = 10 x = np.arange(k) y = np.random.rand(k) plt.bar(x, y) # 畫出 x 和 y 的柱狀圖 # 增加數(shù)值 for x, y in zip(x, y): plt.text(x, y , '%.2f' % y, ha='center', va='bottom') # 通過 # plt.text # 標(biāo)注數(shù)值,設(shè)置參數(shù) # ha = 'center' # 橫向居中對(duì)齊,設(shè)置 # va = 'bottom' # 縱向底部(頂部)對(duì)齊 plt.show()
###################解決Matplotlib 中文會(huì)亂碼問題################# x = ['南京', '上海', '成都', '香港'] y = [60600, 53000, 50400, 52000] plt.plot(x, y) plt.title("中文亂碼") plt.show()
#####其實(shí)只需要配置下后臺(tái)字體即可 plt.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標(biāo)簽 plt.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號(hào) plt.title("中文正常") plt.plot(x, y) plt.show()
后續(xù)其他技巧繼續(xù)更新。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python中Generators教程的實(shí)現(xiàn)
本文主要介紹了Python中Generators教程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02超詳細(xì)注釋之OpenCV dlib實(shí)現(xiàn)人臉采集
這篇文章主要介紹了OpenCV dlib實(shí)現(xiàn)人臉采集,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例
今天小編就為大家分享一篇Python根據(jù)歐拉角求旋轉(zhuǎn)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01玩轉(zhuǎn)串口通信:利用pyserial庫,Python打開無限可能
想要學(xué)習(xí)如何使用pyserial庫實(shí)現(xiàn)串口通信嗎?這篇指南將帶你一步步了解Python中的串口通信,無論是控制硬件設(shè)備還是與外部設(shè)備進(jìn)行數(shù)據(jù)交換,pyserial庫都能為你提供便捷的解決方案,快來跟著我們的指南,輕松掌握串口通信的技巧吧!2023-11-11Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記
這里我們簡單整理一下Python中的異常處理相關(guān)語句基礎(chǔ)學(xué)習(xí)筆記,包括try...except與assert等基本語句的用法講解:2016-07-07