Matplotlib之contuor等高线图

久未见 提交于 2019-12-05 13:42:55

画出类似于下图的等高线图:

代码如下:

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表示字体大小。

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!