1. 程式人生 > >matplotlib.pyplot contourf()函式的使用

matplotlib.pyplot contourf()函式的使用

matplotlib.pyplot contourf 

coutour([X, Y,] Z,[levels], **kwargs)

是來繪製等高線的,contour和contourf都是畫三維等高線圖的,不同點在於contour() 是繪製輪廓線,contourf()會填充輪廓。除非另有說明,否則兩個版本的函式是相同的。

引數: X,Y:類似陣列,可選
  為Z中的座標值
  當 X,Y,Z 都是 2 維陣列時,它們的形狀必須相同。如果都是 1 維陣列時,len(X)是 Z 的列數,而 len(Y) 是 Z 中的行數。(例如,經由建立numpy.meshgrid()
  Z:類似矩陣
  繪製輪廓的高度值
  levels:int或類似陣列,可選
  確定輪廓線/區域的數量和位置

 

 
其他引數: aalpha:float ,可選
  alpha混合值,介於0(透明)和1(不透明)之間。
  cmap:str或colormap ,可選
  Colormap用於將資料值(浮點數)從間隔轉換為相應Colormap表示的RGBA顏色。用於將資料縮放到間隔中看 。

 

Example:

要畫出等高線,核心函式是plt.contourf(),但在這個函式中輸入的引數是x,y對應的網格資料以及此網格對應的高度值,因此我們呼叫np.meshgrid(x,y)把x,y值轉換成網格資料:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


# 計算x,y座標對應的高度值
def f(x, y):
 return (1-x/2+x**3+y**5) * np.exp(-x**2-y**2)
 
# 生成x,y的資料
n = 256
x = np.linspace(-3, 3, n)
y = np.linspace(-3, 3, n)
 
# 把x,y資料生成mesh網格狀的資料,因為等高線的顯示是在網格的基礎上新增上高度值
X, Y = np.meshgrid(x, y)
 
# 填充等高線
plt.contourf(X, Y, f(X, Y))
# 顯示圖表
plt.show()

顯示的圖為:

如果想顯示熱力圖,那隻要在plt.contourf()函式中新增屬性cmap=plt.cm.hot就能顯示熱力圖,其中cmap代表為color map,我們把color map對映成hot(熱力圖)

# 填充等高線
plt.contourf(X, Y, f(X, Y), cmap=plt.cm.hot)

顯示的圖為:

 

 

 

 

 

參考文章:

用matplotlib畫等高線圖詳解