2018年6月29日 星期五

plt contourf 使用

matplot 等高線圖

在一個例子中被使用來 分割區塊

稍微花時間了解了用法




import numpy as np
import matplotlib.pyplot as plt


x = np.arange(-2,2,0.1)
y= np.arange(-2,2,0.1)

xx, yy = np.meshgrid(x,y)

z = np.zeros(xx.shape)

for i in range(0,xx.shape[0]):
    for j in range(0 , xx.shape[1]):
        if(x[i]>0 and y[j]>0):
            z[i,j] = 4
        elif(x[i]>0 and y[j]<0):
            z[i,j] = 3
        elif(x[i]<0 and y[j]>0):
            z[i,j] = 2
        elif(x[i]<0 and y[j]<0):
            z[i,j] = 1

plt.contourf(xx,yy,z , 8)
C = plt.contour(xx , yy ,z, 8)
plt.clabel(C, inline = True, fontsize = 10)
plt.show()

















contourf 三個基本參數 x y 軸 和 z 軸代表高度

先利用x y 建圖
由這邊定義圖的大小

 meshgrid 在於建立圖座標

x = [1,2,3]
y = [1,2,3]

print(np.meshgrid(x , y))
[array([[1, 2, 3],
       [1, 2, 3],
       [1, 2, 3]]),
 array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3]])]

每點進行對應
(1,1) (2,1) (3,1)
(1,2) (2,2) (3,2)
(1,3) (2,3) (3,3)

在進行 Z 的計算
這邊做成 1 2 3 4 象限的形式
不同的高度使用會自動使用不同顏色
沒有好的數學函數可以用 ...


plt.contour 畫出區塊

以下兩行畫出 邊界高度
範例有點不好  看不清楚
C = plt.contour(xx , yy ,z, 8)
plt.clabel(C, inline = True, fontsize = 10)

參數可以參考 plt 的 api

沒有留言:

張貼留言