python+matplotlib 绘制等高线
python+matplotlib 绘制等高线
步骤有七:
- 有一个m*n维的矩阵(data),其元素的值代表高度
- 构造两个向量:x(1*n)和y(1*m)。这两个向量用来构造网格坐标矩阵(网格坐标矩阵m*n维,可见与data同)
- 构造网格坐标矩阵X,Y
- 进行颜色填充
- 画等高线
- 等高线的描述
- 删掉坐标系
1. 构造一下高度矩阵:
def f(x,y): """ 计算高度的函数 :param x: 向量 :param y: 向量 :return: dim(x)*dim(y)维的矩阵 """ # the height function return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2)
2. 构造两个向量:
x = np.linspace(-5,5,256)
y = np.linspace(-5,5,256)
3. 构造网格坐标矩阵:
X,Y = np.meshgrid(x,y) # 获得网格坐标矩阵
4. 进行颜色填充:
# 进行颜色填充 plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot)
5. 画等高线:
# 进行等高线绘制 c = plt.contour(X,Y,f(X,Y),8,colors='black')
6. 等高线描述:
# 线条标注的绘制 plt.clabel(c,inline=True,fontsize=10)
7. 删除两条坐标:
plt.xticks(())
plt.yticks(())
-------------------------------------------------------------------------------------------------
将上面的代码总结一下:
import numpy as np import matplotlib.pyplot as plt def f(x,y): """ 计算高度的函数 :param x: 向量 :param y: 向量 :return: dim(x)*dim(y)维的矩阵 """ # the height function return (1 - x / 2 + x**5 + y**3) * np.exp(-x**2 -y**2) x = np.linspace(-5,5,256) y = np.linspace(-5,5,256) X,Y = np.meshgrid(x,y) # 获得网格坐标矩阵 # 进行颜色填充 plt.contourf(X,Y,f(X,Y),8,cmap=plt.cm.hot) # 进行等高线绘制 c = plt.contour(X,Y,f(X,Y),8,colors='black') # 线条标注的绘制 plt.clabel(c,inline=True,fontsize=10) plt.xticks(()) plt.yticks(()) plt.show()
运行结果: