一、contour概述
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
plt.contour(X, Y, Z)
plt.show()
contour是一种数据可视化的方法,用等高线的方式来表现数据。通俗地说,可以把一张等高线地图看成一张地形图,山峰顶的轮廓线就像是一个二维函数值等于某个特定值的集合。因此contour也适用于二维图像中的各种数据分布,如热图、电势图等。
在matplotlib中,可以使用plt.contour(X,Y,Z)来绘制等高线图,其中X,Y为横纵坐标,Z为等高线数据。
二、contourf的使用
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
plt.contourf(X, Y, Z)
plt.show()
在上一个例子中,我们绘制的是等高线线条,那么怎么填充其中的颜色呢?答案就是使用contourf函数。
plt.contourf(X,Y,Z)的参数和plt.contour相同。它会将数据区间分割无数份,每份之间的颜色都有差别,从而实现等高线图的填充。
三、contour使用colormap调整颜色
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
plt.contourf(X, Y, Z, cmap='coolwarm')
plt.colorbar()
plt.show()
使用plt.contourf绘制的等高线图默认采用等间距的颜色来填充,但有时我们希望通过颜色的变化来更好地表达数据的变化。这时候可以使用colormap。
colormap是一组颜色,旨在通过渐变来改变颜色从而表示数据的变化。我们可以通过在plt.contourf中设置cmap参数来调整颜色。比如colormap中blue和red的搭配可以用coolwarm。
四、contour的一些参数介绍
1. levels
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
plt.contourf(X, Y, Z, levels=10)
plt.show()
在plt.contourf中,可以通过levels参数来控制等高线的数量。默认为10,也可以手动指定。
2. alpha
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
plt.contourf(X, Y, Z, alpha=0.5)
plt.show()
在plt.contourf中,可以通过alpha参数来控制等高线图的透明度。数值范围为[0,1],0为完全透明,1为不透明。
3. linewidths
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
plt.contour(X, Y, Z, linewidths=2)
plt.show()
在plt.contour中,可以通过linewidths参数来控制等高线的线条粗细。默认值为1。
4. linestyles
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-5, 5, 0.1)
y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X ** 2 + Y ** 2))
plt.contour(X,Y,Z, linestyles='dashed')
plt.show()
在plt.contour中,可以通过linestyles参数来控制等高线的线条风格。可选参数有:-, --, -., :等。
总结
本文探究了matplotlib中contour的使用,包括绘制等高线图、填充等高线图、通过colormap调整颜色、不同参数调整等高线图的样式等内容。