狠狠撸

狠狠撸Share a Scribd company logo
matplotlib
Benson
matplotlib
★matplotlib 是基於 Python 所實作的 2D 繪圖套件
★包含兩個最重要的模組: pylab 和 pyplot.
★pylab:屬圖像處理器的介面,與 matlab 所支援的繪圖功能非常類似
★pyplot:是 Python 結合科學數學計算套件(NumPy)的可視化操作界面
matplotlib
(一)安裝 matplotlib
(二)匯入(import) matplotlib.pyplot
(三)圖形
(三)圖形-線圖(Line plot)
(三)圖形-直方圖(Histogram plot)
(三)圖形-長條圖(Bar plot)
(三)圖形-盒鬚圖(Box plot)
(三)圖形-散點圖(Scatter plot)
(三)圖形-圓餅圖(pie plot)
(三)圖形-3D 圖(3D plot)
matplotlib
(四)設定線條格式、形狀、顏色和大小
(五)設定標題、標籤、刻度和限制
(六)設定子圖
(七)其他
matplotlib
(一)安裝 matplotlib
★使用 pip3 安裝 matplotlib 套件
(base) C:Windowssystem32>pip3 install matplotlib
Collecting Matplotlib
Downloading
https://files.pythonhosted.org/packages/b1/56/569c83515c10
146fd0aa09e086816b12e301d0811048e3354a6e9b77ba9a/matplotli
b-3.0.2-cp36-cp36m-win_amd64.whl (8.9MB)
100% |█████████████████████████████
███| 8.9MB 3.5MB/s
Collecting kiwisolver>=1.0.1 (from Matplotlib)
Downloading
https://files.pythonhosted.org/packages/44/72/16630c3392eb
a03788ad87949390516bbc488e8e118047a3b824631d21a6/kiwisolve
r-1.0.1-cp36-none-win_amd64.whl (57kB)
100% |█████████████████████████████
███| 61kB 2.6MB/s
Requirement already satisfied: cycler>=0.10 in
matplotlib
c:usersbensonanaconda3libsite-packages (from
Matplotlib) (0.10.0)
Requirement already satisfied: numpy>=1.10.0 in
c:usersbensonanaconda3libsite-packages (from
Matplotlib) (1.16.1)
Requirement already satisfied:
pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in
c:usersbensonanaconda3libsite-packages (from
Matplotlib) (2.2.0)
Requirement already satisfied: python-dateutil>=2.1 in
c:usersbensonanaconda3libsite-packages (from
Matplotlib) (2.6.1)
Requirement already satisfied: setuptools in
c:usersbensonanaconda3libsite-packages (from
kiwisolver>=1.0.1->Matplotlib) (38.4.0)
Requirement already satisfied: six in
c:usersbensonanaconda3libsite-packages (from
cycler>=0.10->Matplotlib) (1.11.0)
Installing collected packages: kiwisolver, Matplotlib
Successfully installed Matplotlib-3.0.2 kiwisolver-1.0.1
matplotlib
(二)匯入(import) matplotlib.pyplot
In [1]: import matplotlib.pyplot as plt
matplotlib
(三)圖形
★介紹常使用到的圖形,例如:
線圖(Line plot)
直方圖(Histogram plot)
長條圖(Bar plot)
盒鬚圖(Box plot)
散點圖(Scatter plot)
圓餅圖(pie plot)
3D 圖(3D plot)
matplotlib
(三)圖形-線圖(Line plot)
★使用 matplotlib.pyplot 中的 plot 去繪製出線圖.
用法:plt.plot(x,y)
#1)導入 NumPy 和 matplotlib 套件
import numpy as np
import matplotlib.pyplot as plt
#2)透過 NumPy 創建 x 和 y 的數列
x = np.arange(0, 10, 0.1)
y = np.sin(x)
#3)根據輸入 x 和輸出 y 的數據繪製線圖
plt.plot(x, y)
plt.show()
matplotlib
(三)圖形-直方圖(Histogram plot)
★使用 matplotlib.pyplot 中的 hist 去繪製出直方圖.
用法:plt.hist(x)
#1)導入 NumPy 和 matplotlib 套件
import numpy as np
import matplotlib.pyplot as plt
#2)透過 NumPy 創建 x 的數列
x = np.arange(0, 10, 0.1)
x = np.sin(x)
#3)根據輸入 x 的數據繪製直方圖
plt.hist(x)
plt.show()
matplotlib
(三)圖形-長條圖(Bar plot)
★使用 matplotlib.pyplot 中的 bar 去繪製出長條圖.
用法:plt.bar(x,y)
#1)導入 NumPy 和 matplotlib 套件
import numpy as np
import matplotlib.pyplot as plt
#2)透過 NumPy 創建 x 和 y 的數列
x = np.arange(0, 10, 1)
y = x*x
#3)根據輸入 x 和輸出 y 的數據繪製長條圖
plt.bar(x,y)
plt.show()
matplotlib
(三)圖形-盒鬚圖(Box plot)
★使用 matplotlib.pyplot 中的 boxplot 去繪製出盒鬚圖.
用法:plt.boxplot(x)
#1)導入 NumPy 和 matplotlib 套件
import numpy as np
import matplotlib.pyplot as plt
#2)透過 NumPy 創建 x 的數列
x = np.arange(0, 10, 0.1)
x = np.sin(x)
#3)根據輸入 x 的數據繪製盒鬚圖
plt.boxplot(x)
plt.show()
matplotlib
(三)圖形-散點圖(Scatter plot)
★使用 matplotlib.pyplot 中的 scatter 去繪製出散點圖.
用法:plt.plot(x,y)
#1)導入 NumPy 和 matplotlib 套件
import numpy as np
import matplotlib.pyplot as plt
#2)透過 NumPy 創建 x 和 y 的數列
x = np.arange(0, 10, 0.1)
y = np.random.random(100)
#3)根據輸入 x 和輸出 y 的數據繪製散點圖
plt.scatter(x, y)
plt.show()
matplotlib
(三)圖形-圓餅圖(pie plot)
★使用 matplotlib.pyplot 中的 boxplot 去繪製出圓餅圖.
用法:plt.pie(x)
#1)導入 NumPy 和 matplotlib 套件
import numpy as np
import matplotlib.pyplot as plt
#2)透過 NumPy 創建 x 的數列
x = np.arange(0, 10, 1)
#3)根據輸入 x 的數據繪製圓餅圖
plt.pie(x)
plt.show()
matplotlib
(三)圖形-3D 圖(3D plot)
★使用 matplotlib.pyplot 和 mpl_toolkits.mplot3d 中的
plot_surface 去繪製出 3D 圖.
用法: plot_surface(X,Y,Z,*args,norm = None,vmin = None,vmax
= None,lightsource = None,** kwargs)
參數 X,Y,Z:2d 陣列資料
參數 rcount,ccount:每個方向使用的最大樣本數
參數 rstride,cstride:每個方向的下採樣都在下降
參數 color:表面的顏色
參數 cmap:表面的 Colormap
參數 facecolors:每個表面的顏色
參數 norm:色彩映射的規範化
參數 vmin,vmax:標準化的界限
參數 shade:是否遮蓋面部顏色
參數** kwargs:其他參數可參考 mpl_toolkits.mplot3d.art3d.Poly3DCollection
matplotlib
#1)導入 NumPy, matplotlib,和 mpl_toolkits 套件
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#2)將圖像掛在 pyplot 下,並透過 Axes3D 模型將此圖像加上 3D 座標軸.
fig = plt.figure()
ax = Axes3D(fig)
#3)透過 NumPy 創建 x 和 y 的數列
X = np.arange(0, 5, 0.01)
Y = np.arange(0, 5, 0.01)
#4)透過 meshgrid 建立 X, & Y 二維格點
X, Y = np.meshgrid(X, Y)
R = X
Z = np.sin(R)
matplotlib
#5)根據 X,Y, & Z 的數據繪製 3D 圖
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,
cmap='plasma')
plt.show()
matplotlib
(四)設定線條格式、形狀、顏色和大小
線條格式
============= ===============================
character description
============= ===============================
'-' 實線
'--' 虛線
'-.' 虛點線
':' 點線
'.' 點
',' 像素
============= ===============================
matplotlib
線條形狀
============= ===============================
character description
============= ===============================
'.' 點
',' 像素點
'o' 圓點
'v' 角朝下的三角形
'^' 角朝上的三角形
'<' 角朝左的三角形
'>' 角朝右的三角形
'1' 角朝下的三腳架
'2' 角朝上的三腳架
'3' 角朝左的三腳架
'4' 角朝右的三腳架
matplotlib
's' 正方形
'p' 五邊形
'*' 星點
'h' 六邊形 1
'H' 六邊形 2
'+' 加符號
'x' x 符號
'D' 菱形
'd' 小菱形
'|' 垂直線
'_' 水平線
============= ===============================
matplotlib
線條顏色
============= ===============================
character color
============= ===============================
'b' 藍色
'g' 綠色
'r' 紅色
'c' 青色
'm' 洋紅色
'y' 黃色
'k' 黑色
'w' 白色
============= ===============================
matplotlib
線條大小(線寬)
參數:lw = 10, 或 linewidth = 10,
範例:以線圖(Line plot)做為基底,線條形狀選擇虛線('--'),線條顏色選擇
紅色('r'),線條大小設定為 10(lw=10).
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y,'r--',lw = 10)
plt.show()
matplotlib
(五)設定標題、標籤、刻度和限制
title:設置圖形標題
用法:
plt.title('sample plot')
xlabel & ylabel:設置 x 軸 & y 軸的標籤
用法:
plt.xlabel('x label')
plt.ylabel('y label')
matplotlib
xlim & ylim:獲得或設置當前 x 軸 & y 軸的限制
獲得用法:
x_left, x_right = plt.xlim()
y_left, y_right = plt.ylim()
設置用法:
plt.xlim(x_left, x_right)
plt.ylim(y_left, y_right)
matplotlib
xscale & yscale:設置 x 軸 & y 軸的刻度
用法:
plt.xscale('linear')
plt.xscale('log')
plt.xscale('symlog')
plt.xscale('logit')
plt.yscale('linear')
plt.yscale('log')
plt.yscale('symlog')
plt.yscale('logit')
matplotlib
xticks & yticks:獲得或設置當前 x 軸 & y 軸的刻度位置和標籤
獲得用法:
locs, labels = plt.xticks()
locs, labels = plt.yticks()
設置用法:
plt.xticks(np.arange(0, 10, step=2))
plt.yticks(np.arange(0, 10, step=2))
matplotlib
範例: 以線圖(Line plot)做為基底, 設置圖形標題為 title, x 軸的標籤為
xlabel, y 軸的標籤為 ylabel.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.title('title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.show()
matplotlib
(六)設定子圖
使用 plt.subplot 來建構多張圖.其中,參數 row 為幾行的子圖,參數 col 為
幾列的子圖,參數 i 為顯示在第幾行第幾列的子圖.
用法:
plt.subplot(row col i)
matplotlib
範例 1: 以線圖(Line plot)做為基底,建構一個包含 1 行 2 列(1×2)的子圖.
其中, (121)表示第 1 行第 1 列(1×1)的子圖為紅色, (122)表示第 1 行第 2
列(1×2)的子圖為藍色.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.subplot(121,facecolor = 'red')
plt.plot(x,y)
plt.subplot(122,facecolor = 'blue')
plt.plot(x,y)
plt.show()
matplotlib
範例 2: 以線圖(Line plot)做為基底,建構一個包含 2 行 1 列(2×1)的子圖.
其中, (211)表示第 1 行第 1 列的子圖為紅色, (212)表示第 2 行第 1 列的子
圖為藍色.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.subplot(211,facecolor = 'red')
plt.plot(x,y)
plt.subplot(212,facecolor = 'blue')
plt.plot(x,y)
plt.show()
matplotlib
範例 3: 以線圖(Line plot)做為基底,建構一個包含 2 行 2 列(2×2)的子圖.
其中, (221)表示第 1 行第 1 列的子圖為紅色, (222)表示第 1 行第 2 列的子
圖為藍色, (223)表示第 2 行第 1 列的子圖為綠色, (224)表示第 2 行第 2 列
的子圖為灰色.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.subplot(221,facecolor = 'red')
plt.plot(x,y)
plt.subplot(222,facecolor = 'blue')
plt.plot(x,y)
matplotlib
plt.subplot(223,facecolor = 'green')
plt.plot(x,y)
plt.subplot(224,facecolor = 'gray')
plt.plot(x,y)
plt.show()
matplotlib
範例 4: 以線圖(Line plot)做為基底,建構一個包含 2 行 2 列(2×2)的子圖,
且第 2 行的第 1 和 2 列合併成 1 個子圖.其中, (221)表示第 1 行第 1 列的子
圖為紅色, (222)表示第 1 行第 2 列的子圖為藍色, (212)表示第 2 行的第 1
和 2 列所合併的子圖為綠色.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.subplot(221,facecolor = 'red')
plt.plot(x,y)
plt.subplot(222,facecolor = 'blue')
plt.plot(x,y)
matplotlib
plt.subplot(212,facecolor = 'green')
plt.plot(x,y)
plt.show()
matplotlib
範例 5: 以線圖(Line plot)做為基底,建構一個包含 3 行 3 列(3×3)的子圖,
且第 2 行的第 2 和 3 列合併成 1 個子圖和第 3 行的第 1、2 和 3 列合併成 1 個
子圖.其中, (331)表示第 1 行第 1 列的子圖為紅色, (332)表示第 1 行第 2
列的子圖為藍色, (333)表示第 1 行第 3 列的子圖為綠色, (334)表示第 2 行
第 1 列的子圖為黑色, (335)表示第 2 行第 2 列的子圖為粉紅色, (336)表示
第 2 行第 3 列的子圖為橘色, (337)表示第 3 行第 1 列的子圖為紫色, (338)
表示第 3 行第 2 列的子圖為銀色, (339)表示第 3 行第 3 列的子圖為棕色.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
matplotlib
plt.subplot(331,facecolor = 'red')
plt.plot(x,y)
plt.subplot(332,facecolor = 'blue')
plt.plot(x,y)
plt.subplot(333,facecolor = 'green')
plt.plot(x,y)
plt.subplot(334,facecolor = 'black')
plt.plot(x,y)
plt.subplot(335,facecolor = 'pink')
plt.plot(x,y)
plt.subplot(336,facecolor = 'orange')
matplotlib
plt.plot(x,y)
plt.subplot(337,facecolor = 'purple')
plt.plot(x,y)
plt.subplot(338,facecolor = 'silver')
plt.plot(x,y)
plt.subplot(339,facecolor = 'brown')
plt.plot(x,y)
plt.show()
matplotlib
範例 6: 以線圖(Line plot)做為基底,建構一個包含 3 行 3 列(3×3)的子圖,
且第 2 行的第 1、2 和 3 列合併成 1 個子圖以及第 3 行的第 1、2 和 3 列合併成
1 個子圖.其中, (331)表示第 1 行第 1 列的子圖為紅色, (332)表示第 1 行
第 2 列的子圖為藍色, (333)表示第 1 行第 3 列的子圖為綠色, (312)表示第
2 行第 1、2 和 3 列的子圖為粉紅色, (313)表示第 3 行第 1、2 和 3 列的子圖
為黃色.
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.subplot(331,facecolor = 'red')
matplotlib
plt.plot(x,y)
plt.subplot(332,facecolor = 'blue')
plt.plot(x,y)
plt.subplot(333,facecolor = 'green')
plt.plot(x,y)
plt.subplot(312,facecolor = 'pink')
plt.plot(x,y)
plt.subplot(313,facecolor = 'yellow')
plt.plot(x,y)
plt.show()
matplotlib
(七)其他
*背景顏色:使用plt.figure來設置座標軸背景顏色(facecolor='color'),
和邊框顏色(edgecolor ='color'),以及 plt.subplot 來設置圖形背景顏
色(facecolor='color')
用法:
plt.figure(facecolor='color',edgecolor='black')
plt.subplot(facecolor = 'color')
matplotlib
範例: 以線圖(Line plot)做為基底, 設置座標軸背景顏色為紅色, 邊框顏色
為黑色, 圖形背景顏色為灰色.
import numpy as np
import matplotlib.pyplot as plt
plt.figure(facecolor='red',edgecolor='black')
plt.subplot(facecolor = 'gray')
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
matplotlib
*存成圖形檔:
用法:plt.savefig("filename.jpg",dpi=300,format="jpg")
matplotlib
*字體屬性:
有六個屬性可以選擇,如 family, style, variant, stretch, weight, 和
size.
family: 字體系列名稱,例如: ('Courier New') 或 ('Times New
Roman').
style: 字體樣式,正常('normal'),斜體('italic') 或 傾斜
('oblique')
matplotlib
variant: 變體,正常('normal') 或小型('small-caps')
stretch: 延展,0-1000 範圍內的數值或其中之一,或者以下其中一個 value.
超濃縮('ultra-condensed'), 超濃縮
('extra-condensed'), 濃縮('condensed'), 半壓縮
('semi-condensed'), 正常('normal'), 半擴展
('semi-expanded'), 擴展('expanded'),擴展
('extra-expanded') 或 超擴展('ultra-expanded').
matplotlib
weight: 權重,0-1000 範圍內的數值或其中之一,或者以下其中一個 value.
('ultralight'), ('light'), ('normal'), ('regular'),
('book'), ('medium'), ('roman'), ('semibold'),
('demibold'), ('demi'), ('bold'), ('heavy'),
('extra bold'), ('black')
size: 大小,可直接給定字體大小的數字(例如:20),或者以下其中一個.超
('xx-small'), 微小('x-small'),小('small'), 中
('medium'), 大('large'), 微大('x-large'), 超大
('xx-large')
matplotlib
範例: 以線圖(Line plot)做為基底, 設置標題的 family 為 Times New
Roman 和 size 為 30, x&y 軸標籤的 family 為 Courier New 和 size 為 20.
import numpy as np
import matplotlib.pyplot as plt
plt.title('title',{'family':'Times New Roman','size':30})
plt.xlabel('xlabel',{'family':'Courier New','size':20})
plt.ylabel('ylabel',{'family':'Courier New','size':20})
x = np.arange(0, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.show()
matplotlib
Reference:
https://matplotlib.org/

More Related Content

Python - Matplotlib basic - v01