您的位置:

探究matplotlib的contour

一、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调整颜色、不同参数调整等高线图的样式等内容。