画出类似于下图的等高线图:
代码如下:
import matplotlib.pyplot as plt
from numpy import *
n=256
x=linspace(-3,3,n)
y=linspace(-3,3,n)
X,Y=meshgrid(x,y)
Z=(1-X/2+X**5+Y**3)*exp(-X**2-Y**2)
#等高线填充
plt.contourf(X,Y,Z,8,alpha=0.75,cmap=plt.cm.hot)
#添加等高线
C=plt.contour(X,Y,Z,8,colors='black',linewidths=0.3)
#添加label
plt.clabel(C,inline='True',fontsize=10)
plt.xticks(())
plt.yticks(())
plt.show()
代码解释:
- X,Y=meshgrid(x,y)函数的返回值是二维网格坐标。
X是一个矩阵,其中的每一行数据都是x(数组x相当于是一个行向量),X是由length(y)行x组成的。同样Y这个矩阵的每一列都是y(数组y相当于是一个列向量),Y是由length(x)列y组成的。所以说X和Y是相似矩阵。
例子:
>>> x=[1,2]
>>> y=[1,2,3,4]
>>> X,Y=meshgrid(x,y)
>>> X
array([[1, 2],
[1, 2],
[1, 2],
[1, 2]])
>>> Y
array([[1, 1],
[2, 2],
[3, 3],
[4, 4]])
- contourf:填充等高线,contour:绘制等高线。这两个函数的返回值是一样的。
plt.contourf(X,Y,Z,8,alpha=0.75,cmap=plt.cm.hot):8为图中划分的等高线的条数;alpha为图片颜色的透明度;cmap为等高线图的颜色映射,plt.cm.hot表示的是图片颜色为暖色调,plt.cm.cool表示冷色调。
contour(X,Y,Z):X和Y限制了x,y坐标轴的取值范围;这个函数是用来绘制Z的等高线;X、Y、Z必须是同型矩阵。等高线的值介于Z的最大值和最小值之间,Z值相同的点出现在同一条等高线上。
- plt.clabel(C,inline='True',fontsize=10):这个函数是标注等高线的函数。C是由contour函数产生的句柄对象;inline=‘True’表示将标签嵌在等高线上显示,fontsize表示字体大小。
- meshgrid(x,y)函数的详细讲解:https://blog.csdn.net/beautiful77moon/article/details/97006920
来源:CSDN
作者:赵 XiaoQin
链接:https://blog.csdn.net/beautiful77moon/article/details/96598820