python+matplotlib 繪制等高線


python+matplotlib 繪制等高線

 步驟有七:

  • 有一個m*n維的矩陣(data),其元素的值代表高度
  • 構造兩個向量:x(1*n)和y(1*m)。這兩個向量用來構造網格坐標矩陣(網格坐標矩陣m*n維,可見與data同)
  • 構造網格坐標矩陣X,Y
  • 進行顏色填充
  • 畫等高線
  • 等高線的描述
  • 刪掉坐標系

1. 構造一下高度矩陣:

def f(x,y):
    """
    計算高度的函數
    :param x: 向量
    :param y: 向量
    :return: dim(x)*dim(y)維的矩陣
    """
    # the height function
    return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)

 

 2. 構造兩個向量:

x = np.linspace(-5,5,256)
y = np.linspace(-5,5,256)

 

3. 構造網格坐標矩陣:

X,Y = np.meshgrid(x,y)  # 獲得網格坐標矩陣

 

4. 進行顏色填充:

# 進行顏色填充
plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot)

 

5. 畫等高線:

# 進行等高線繪制
c = plt.contour(X,Y,f(X,Y),8,colors='black')

 

6. 等高線描述:

# 線條標注的繪制
plt.clabel(c,inline=True,fontsize=10)

 

7. 刪除兩條坐標:

plt.xticks(())
plt.yticks(())

 

-------------------------------------------------------------------------------------------------

將上面的代碼總結一下:

import numpy as np
import matplotlib.pyplot as plt

def f(x,y):
    """
    計算高度的函數
    :param x: 向量
    :param y: 向量
    :return: dim(x)*dim(y)維的矩陣
    """
    # the height function
    return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)

x = np.linspace(-5,5,256)
y = np.linspace(-5,5,256)
X,Y = np.meshgrid(x,y)  # 獲得網格坐標矩陣

# 進行顏色填充
plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot)
# 進行等高線繪制
c = plt.contour(X,Y,f(X,Y),8,colors='black')
# 線條標注的繪制
plt.clabel(c,inline=True,fontsize=10)

plt.xticks(())
plt.yticks(())

plt.show()

 

運行結果:

 

 

 


免責聲明!

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



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