C語言中文網 目錄

Python Matplotlib contour和contourf:繪制等高線

等高線圖需要的是三維數據,其中 X、Y 軸數據決定坐標點,還需要對應的高度數據(相當于 Z 軸數據)來決定不同坐標點的高度。

有了合適的數據之后,程序調用 contour() 函數繪制等高線,調用 contourf() 函數為等高線圖填充顏色。

在調用 contour()、contourf() 函數時可以指定如下常用參數:
  • x:指定 X 軸數據。
  • y:指定 Y 軸數據。
  • z:指定 X、Y 坐標對應點的高度數據。
  • colors:指定不同高度的等高線的顏色。
  • alpha:指定等高線的透明度。
  • cmap:指定等高線的顏色映射,即自動使用不同的顏色來區分不同的高度區域。
  • linewidths:指定等高線的寬度。
  • linestyles:指定等高線的樣式。

下面程序使用 contour()、contourf() 函數來繪制等高線圖:
import matplotlib.pyplot as plt
import numpy as np

delta = 0.025
# 生成代表X軸數據的列表
x = np.arange(-3.0, 3.0, delta)
# 生成代表Y軸數據的列表
y = np.arange(-2.0, 2.0, delta)
# 對x、y數據執行網格化
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
# 計算Z軸數據(高度數據)
Z = (Z1 - Z2) * 2
# 為等高線圖填充顏色, 16指定將等高線分為幾部分
plt.contourf(x, y, Z, 16, alpha = 0.75,
    cmap='rainbow')  # 使用顏色映射來區分不同高度的區域
# 繪制等高線
C = plt.contour(x, y, Z, 16,
    colors = 'black', # 指定等高線的顏色
    linewidth = 0.5) # 指定等高線的線寬
# 繪制等高線數據
plt.clabel(C, inline = True, fontsize = 10)
# 去除坐標軸
plt.xticks(())
plt.yticks(())
# 設置標題
plt.title("等高線圖")
# 為兩條坐標軸設置名稱
plt.xlabel("緯度")
plt.ylabel("經度")
plt.show()
上面程序中,第 16 行代碼用于為等高線圖填充顏色,此處指定了 cmap 參數,這意味著程序將會使用不同的顏色映射來區分不同高度的區域。

程序中第 19 行代碼調用 contour() 函數來繪制等高線。運行上面程序,可以看到如圖 1 所示的效果。

contour和contourf繪制等高線圖
圖 1 contour和contourf繪制等高線圖

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo