一、基本介绍
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/n/301086.html