matplotlib 在線繪圖教程


轉自https://freeaihub.com/article/plot-online-with-matplotlib-in-python.html,該頁可在線交互學習

matplotlib是python中基礎的的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式繪圖制圖。該庫文檔完備,並且 Gallery頁面 中有上百幅縮略圖,打開之后都有源程序。本節是matplotlib的入門課程,將在線使用matplotlib進行圖表在線繪制幾個例子,從而理解和學習matplotlib繪圖的 一些基本概念。

快速繪圖

matplotlib的pyplot子庫提供了和matlab類似的繪圖API,方便用戶快速繪制2D圖表。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize=(8,4))
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)
plt.legend()
plt.show()

pylab模塊

matplotlib還提供了名為pylab的模塊,其中包括了許多numpy和pyplot中常用的函數,方便用 戶快速進行計算和繪圖,可以用於IPython中的快速交互式使用。

接下來調用figure創建一個繪圖對象,並且使它成為當前的繪圖對象。

import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))

也可以不創建繪圖對象直接調用接下來的plot函數直接繪圖,matplotlib會為我們自動創建一個繪圖對 象。如果需要同時繪制多幅圖表的話,可以是給figure傳遞一個整數參數指定圖標的序號,如果所指定 序號的繪圖對象已經存在的話,將不創建新的對象,而只是讓它成為當前繪圖對象。 通過figsize參數可以指定繪圖對象的寬度和高度,單位為英寸;dpi參數指定繪圖對象的分辨率,即每 英寸多少個像素,缺省值為80。因此本例中所創建的圖表窗口的寬度為880 = 640像素。 但是用工具欄中的保存按鈕保存下來的png圖像的大小是800400像素。這是因為保存圖表用的函數 savefig使用不同的DPI配置,savefig函數也有一個dpi參數,如果不設置的話,將使用matplotlib配置 文件中的配置,此配置可以通過如下語句進行查看,關於配置文件將在后面的章節進行介紹:

import matplotlib
matplotlib.rcParams["savefig.dpi"]

下面的兩行程序通過調用plot函數在當前的繪圖對象中進行繪圖:

plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)
plt.plot(x,z,"b--",label="$cos(x^2)$")
plt.show()

plot函數的調用方式很靈活,第一句將x,y數組傳遞給plot之后,用關鍵字參數指定各種屬性: • label : 給所繪制的曲線一個名字,此名字在圖示(legend)中顯示。只要在字符串前后添加’‘$’‘符 號,matplotlib就會使用其內嵌的latex引擎繪制的數學公式。 • color : 指定曲線的顏色 • linewidth : 指定曲線的寬度 第二句直接通過第三個參數’‘b–指定曲線的顏色和線型,這個參數稱為格式化參數,它能夠通過 一些易記的符號快速指定曲線的樣式。其中b表示藍色,''--表示線型為虛線。在IPython中輸入 ``plt.plot?’’ 可以查看格式化字符串的詳細配置。 接下來通過一系列函數設置繪圖對象的各個屬性:

plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)
plt.legend()
  • xlabel : 設置X軸的文字 • ylabel : 設置Y軸的文字 • title :

設置圖表的標題 • ylim : 設置Y軸的范圍 • legend : 顯示圖示 最后調用plt.show()顯示出我們創建的所有繪圖對象。

配置屬性

matplotlib所繪制的圖的每個組成部分都對應有一個對象,我們可以通過調用這些對象的屬 性設置方法 set_*或者pyplot的屬性設置函數 setp設置其屬性值。例如plot函數返回一個 matplotlib.lines.Line2D 對象的列表,下面的例子顯示如何設置Line2D對象的屬性:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1)
line, = plt.plot(x, x*x) # plot返回一個列表,通過line,獲取其第一個元素
# 調用Line2D對象的set_*方法設置屬性值
line.set_antialiased(False)
# 同時繪制sin和cos兩條曲線,lines是一個有兩個Line2D對象的列表
lines = plt.plot(x, np.sin(x), x, np.cos(x)) #
# 調用setp函數同時配置多個Line2D對象的多個屬性值
plt.setp(lines, color="r", linewidth=2.0)
plt.setp(line,linewidth=1.0)
plt.show()

Figure對象有一個axes屬性,其值為AxesSubplot對象的列表,每個AxesSubplot對象代表圖表中的 一個子圖,前面所繪制的圖表只包含一個子圖,當前子圖也可以通過plt.gca獲得:

plt.gca()

用plt.getp可以發現AxesSubplot對象有很多屬性,例如它的lines屬性為此子圖所包括的 Line2D 對象 列表:

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1)

# plot函數返回一個 matplotlib.lines.Line2D 對象的列表
line, = plt.plot(x, x*x) # plot返回一個列表,通過line,獲取其第一個元素
line.set_antialiased(False) # 調用Line2D對象的set_*方法設置屬性值

# 同時繪制sin和cos兩條曲線,lines是一個有兩個Line2D對象的列表
lines = plt.plot(x, np.sin(x), x, np.cos(x))
# 調用setp函數同時配置多個Line2D對象的多個屬性值

alllines = plt.getp(plt.gca(), "lines")
alllines
alllines[0] == line # 其中的第一條曲線就是最開始繪制的那條曲線
#通過這種方法我們可以很容易地查看對象的屬性和它們之間的包含關系,找到需要配置的屬性。

通過以上示例,相信你已經大致了解了matplotlib最基礎的功能,了解了它最基礎的用法,並可以自己繪制出一些簡單的圖形,更多的圖形,請關注我們網站freeaihub.com,我們會持續自己更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM