3.3 Matplotlib绘图基础 | 您所在的位置:网站首页 › 彩色线画 › 3.3 Matplotlib绘图基础 |
伪彩色图和等值线图是对二维数组进行填色展示的重要方法。其中伪彩色图一般用plt.pcolormesh()函数来绘制(官方文档说plt.pcolor在绘制较大的图时会非常慢,两者用法相同),等值线图一般采用plt.contour()函数来绘制。 一、准备工作 1. 生成坐标网格 对于绘制二维数组填色图,我们首先应该使用numpy.mgrid()函数产生两个二维坐标网格数组,用于分别表示x,y。其中的原因如下图 对于每一个实际的坐标x,y,它们都由相对位置i,j来表示,因此wile相对位置与实际位置的转换,我们需要使用numpy.mgrid()函数。 其中slice()函数用法跟range()函数类似,都是slice(起始,结尾(不包含),间隔)。并且都是左闭右开区间,因此在结尾处,多加了一个水平坐标间隔,这里我们定义范围是[-5,5]。得到了两个x,y的二维坐标数组。 2. 得到z值 如果已经有二维数据,可忽略此步骤。 如果为了计算函数图像,在这里可进行计算。在这里想要得到z=sin(x*y)的函数图像 对于Numpy数组的三角函数以及数学计算,将在后期整理一个附录进行讲解。 3. 选择colormap Matplotlab中提供了很多colormap供我们选择,使用plt.get_cmap()函数来定义该图的colormap 二、伪彩色图 plt.pcolormesh() 伪彩色图是一个一个色块组成,其语法为 其中x,y是生成的二维坐标数组,z是二维数组上的数据,与x,y数组大小相同,cmap表示选择的颜色映射。 更多颜色映射可以查看: 附录3.3 色彩映射与自定义colorbar - 哔哩哔哩 (bilibili.com) 例如, 其它参数: 1. cmap 颜色映射。可以提前通过plt.get_cmap()函数来获得,也可以直接输入颜色映射字符串名称。 2. vmin 和 vmax 拥有颜色数值范围。在范围之外的数值颜色则按照该颜色映射的最低或最高数值对应的颜色来绘制,相应的颜色区分度也有所下降。在这里,我们将vmin和vmax分别改成-0.5和0.5。 可以发现,深绿色和深红色面积明显增大。这里可以表明我们主要研究[-0.5,0.5]区间的数据变化,在此之外的可以忽略。 3. shading 插值样式,具体查看官方文档 https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.pcolormesh.html ① ’flat‘ ② 'nearest' ③ 'gouraud' ④ ’auto‘ 4. edgecolors 网格线颜色,默认edgecolors=None. 这里如果改成蓝色 我们可以看到密密麻麻的蓝色网格。 若后面同时还有参数shading,则edgecolors参数设置无效,自动变成None。 5. alpha 设置颜色透明度。 三、等值线填色图 plt.contourf() 其语法为 其中levels代表等值线位置,是一个一维数组,例如 我们在这里分别在-1,-0.8,-0.5,-0.2,0,0.2,0.5,0.8,1绘制等值线,如图 其他参数: 1. colors 自定义各区间的颜色,如果不填,则选用cmap的颜色 2. alpha、cmap、vmin、vmax、norm 这五个参数用法同plt.pcolormesh(),这里不做介绍。 3. extend 功能:确定在范围之外填充的颜色,可选值为 'neither', 'both', 'min','max'。一般与vmin和vmax参数配合使用。 4. linewidths 功能:设置等值线线宽度,一般为数字。 5. linestyles 功能:等值线线型,一般可选None, 'solid', 'dashed', 'dashdot', 'dotted'。 四、等值线图 plt.contour() 其内部不填充颜色,只绘制以不同颜色区分的分界线,参数与plt.contourf()类似。 五、颜色条 plt.colorbar() 该函数主要用于显示颜色条以及对颜色条的参数设置,语法为 1. location 功能:设置颜色条位置,可选值为None or {'left', 'right', 'top', 'bottom'} 2. orientation 功能:设置颜色条方向,可选值为None or {'vertical', 'horizontal'} 3. fraction 功能:一个浮点数,colorbar的宽度与原数轴宽度的比例,默认为0.15 4. shrink 功能:一个浮点数,设置颜色条与默认大小比例,默认为1.0 5. aspect 功能:一个浮点数,颜色条长和宽比例,默认为20.0 6. ticks 功能: 一个一维数组,设置显示刻度的数值,默认为None 7. drawedges 功能:布尔值,是否画颜色之间的线 8. boundaries, values 功能:设置颜色之间线条宽度,默认为None 六、plt.clim() 功能:设置颜色显示范围。语法为 例如 七、plt.clabel() 该语句主要是在图中显示等值线具体的值,与plt.contour()配合使用。 一些参数: 1. inline 功能:布尔变量,是否显示文字区域没有等高线 2. levels 功能:一个一维数组,等值线位置。 3. fontsize,colors 功能:文字大小和颜色 4. fmt 功能:表示数字的精度,'%1.xf'中x表示精确到小数点后几位,如果是整数就用0代替,小数点后2位就用2代替。 5. manual 功能:设置为True以后可以在matplotlib的绘图界面上手动点选需要标签的等高线与位置,之后可以使用绘图界面的保存将点选好的图片保存下来。 |
CopyRight 2018-2019 实验室设备网 版权所有 |