8.1、绘制等高线图
等高线图是地形上高程相等的相邻各点所连成的闭合曲线,它会将地面上海拔高度相同的点连成环线,之后将环线垂直投影到某一水平面上,并按照一定的比例缩绘到图纸上。
在matplotlib中,pyplot可以使用contour()、contourf()函数分别绘制和填充等高线图。
X,Y:表示坐标点的网格数据
Z:表示坐标点对应的高度数据
levels:表示等高线的数量。
colors:表示不同高度的等高线颜色
cmap:表示颜色的映射表
linewidths:表示等高线的宽度
linestyle:表示等高线的线型
Axes类的对象也可以使用contour(),contourf()方法绘制和填充等高线。
示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
def calcu_elevation(x1,y1):
h=(1-x1/2+x15+y13)*np.exp(-x12-y12)
return h
n=256
x=np.linspace(-1,2,n)
y=np.linspace(-1,2,n)
x_grid,y_grid=np.meshgrid(x,y)
fig=plt.figure()
ax=fig.add_subplot(111)
con=ax.contour(x_grid,y_grid,calcu_elevation(x_grid,y_grid),
8,colors=‘black’)
ax.contourf(x_grid,y_grid,calcu_elevation(x_grid,y_grid),
8,alpha=0.75,cmap=plt.cm.copper)
ax.clabel(con,inline=True,fmt=‘%1.1f’,fontsize=10)
ax.set_xticks([])
ax.set_yticks([])
plt.title(‘51’)
plt.show()
8.2、绘制矢量场流线图
该函数常用参数含义如下:
x,y:表示间距均匀的网格数据
u,v:表示(x,y)速率的二维数组
density:表示流线的密度
arrowsize:表示箭头的大小
arrowstyle:表示箭头的类型
minlength:表示流线的最小长度
maxlength:表示流线的最大长度
Axes类的对象也可以使用streamplot()方法绘制矢量场流线图
示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
y,x=np.mgrid[0:5:50j,0:5:50j]
u=x
v=y
fig=plt.figure()
ax=fig.add_subplot(111)
ax.streamplot(x,y,u,v,density=2)
plt.title(‘51’)
plt.show()
8.3、绘制棉棒图
x,y:表示茎的x值和茎头的y 值
linefmt:表示茎属性的字符串
markerfmt:表示茎头属性的字符串
basefmt:表示基线属性的字符串
bottom:表示基线的y值
label:表示应用于图例的标签
use_line_collection:若设为True,则将棉棒图的所有线段存储到一个LineCollection类对象中,若设为False,则将棉棒图的所有线段存储到列表中。。
stem()函数会返回一个形如(markerline,stemline,baseline)的三元组。
示例代码如下:
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif’]=‘SimHei’
plt.rcParams[‘axes.unicode_minus’]=False
x=np.arange(1,16)
y=np.array([5.9,6.2,6.7,7.0,7.1,7.1,7.4,7.5,
7.6,7.7,7.7,7.7,7.8,7.9,8.0])
labels=np.array([‘宝骏310’,‘宝马i