一、基本介紹
plt.contour是matplotlib中的一個繪製等高線圖的函數,可以用來展示一個函數在二維空間內的高度分佈情況。等高線是由同一高度值組成的曲線,等高線圖是由多條等高線組成的圖形。它可以有效地可視化二維函數的各種特徵及其在各個方向上的變化。
函數的定義如下:
plt.contour(*args, data=None, **kwargs)
其中*args為x, y和z三個二維數組,分別代表坐標軸上的x、y值和每個點對應的高度值z。如果data不為空,則可以將z的值存儲在data中。kwargs則是其他可選參數,比如控制等高線線條粗細、線條顏色、標籤等。
二、繪製簡單的等高線圖
在這個例子中,我們將通過一個簡單的二元二次函數來說明如何使用plt.contour函數繪製等高線圖。我們假設二元二次函數為f(x, y) = x^2 + y^2,在[-1, 1]範圍內採樣並繪製等高線圖。
import matplotlib.pyplot as plt
import numpy as np
# 構造二元二次函數f(x, y) = x^2 + y^2
def f(x, y):
return x**2 + y**2
# 在[-1, 1]範圍內生成採樣點
x = np.linspace(-1, 1, 101)
y = np.linspace(-1, 1, 101)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
# 繪製等高線圖
plt.contour(X, Y, Z)
plt.show()
在上述代碼中,我們首先使用np.linspace函數在x軸和y軸上均勻採樣101個點,然後使用np.meshgrid函數生成x和y坐標軸的網格。使用f函數計算每個網格點的高度值,並存儲在Z中。最後調用plt.contour函數繪製等高線圖,輸出如下結果:
三、控制等高線線條粗細和線條顏色
對於等高線圖的繪製,我們還可以通過設置可選參數來調整線條的粗細和顏色。下面的例子展示了如何控制線條的粗細和顏色。具體來說,我們將在[-3, 3]範圍內生成採樣點,並將其高度設為sin(x) + cos(y)。然後使用plt.contour函數繪製等高線圖,控制線條顏色為藍色,線條寬度為2。
import matplotlib.pyplot as plt
import numpy as np
# 構造二元函數
def f(x, y):
return np.sin(x) + np.cos(y)
# 在[-3, 3]範圍內生成採樣點
x = np.linspace(-3, 3, 101)
y = np.linspace(-3, 3, 101)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
# 繪製等高線圖
plt.contour(X, Y, Z, colors="blue", linewidths=2)
plt.show()
運行上述代碼,輸出如下結果:
四、繪製帶標籤的等高線圖
在等高線圖中,我們還可以為每條等高線添加標籤。標籤通常包括等高線高度和等高線條數,方便用戶讀取信息。下面的示例展示了如何為等高線圖添加標籤。具體來說,我們將在[-5, 5]範圍內隨機生成100個採樣點,並將其高度設為(x^2+y^2)/10。然後將等高線條數設置為10,為每條等高線添加標籤:高度和條數。
import matplotlib.pyplot as plt
import numpy as np
# 在[-5, 5]範圍內隨機生成100個採樣點
x = np.random.uniform(low=-5, high=5, size=100)
y = np.random.uniform(low=-5, high=5, size=100)
z = (x**2 + y**2) / 10
# 繪製帶有標籤的等高線圖
plt.contour(x, y, z, levels=10, colors="black")
plt.clabel(fmt='%2.1f', inline=True)
plt.show()
運行上述代碼,輸出如下結果:
五、繪製帶顏色填充的等高線圖
在等高線圖中,我們還可以使用等高線條周圍的顏色來表示等高線高度。常用的方式是使用plt.contourf函數,它可以在等高線之間填充顏色。
import matplotlib.pyplot as plt
import numpy as np
# 構造二元函數
def f(x, y):
return np.sin(x) + np.cos(y)
# 在[-3, 3]範圍內生成採樣點
x = np.linspace(-3, 3, 101)
y = np.linspace(-3, 3, 101)
X, Y = np.meshgrid(x, y)
Z = f(X, Y)
# 繪製帶顏色填充的等高線圖
plt.contourf(X, Y, Z, 12, cmap=plt.cm.rainbow)
plt.contour(X, Y, Z, colors="black")
plt.show()
在上述代碼中,我們使用plt.contourf函數繪製填充顏色的等高線圖,設置色盤為彩虹色,顏色數量為12。然後再使用plt.contour函數繪製同一等高線圖的輪廓線。
運行上述代碼,輸出如下結果:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/301086.html