stipple函数的坑......matlab绘制显著点
序:
臭matlab。。。为了画这个显著点我花了一天找数据的问题。。。结果发现只需调下参数就行💩
正文:
1、无投影的二维图像上绘制点
如果在普通二维图像上绘制,直接输入二维坐标,和为要画的点的矩阵。如下例。
注意:mask是一个0/1矩阵,要画的位置为1(显著区域);区域为0。
figure();
[X,Y,Z] = peaks(1000);
pcolor(X,Y,Z);
shading interp;hold on;
mask = Z>2.5;
stipple(X,Y,mask);
2、有
投影的地图上绘制显著点
当在投影地图上使用 stipple
绘制显著点时
首先需要将经纬度坐标转换为投影坐标!!!很重要!!
可以使用m_map中的m_ll2xy
函数进行经纬度到投影坐标的转换。
[lx,ly] = m_ll2xy(lon_era5,lat_era5);
stipple(lx,ly,mask,'color','black','marker',".", 'Markersize',3);
lon_era5
和 lat_era5
是经纬度数据,lx
和 ly
是转换后的投影坐标。
其次,要通过两个函数来控制点的密集!!!很重要!!
在某些情况下,使用默认设置时,绘制的显著点可能会非常少,甚至只有几个点。这通常是因为 stipple
函数的默认参数设置不适合你的数据分布,导致某些显著点无法显示。可以试一下调节以下参数。
- 'density':控制点的密度。增大该值可以使更多的点被绘制。
- 'resize':控制点的大小和图像的缩放比例。将其设置为
true
可以自动调整图像的显示。
[lx,ly] = m_ll2xy(lon_era5,lat_era5);
stipple(lx,ly,mask,'density',350,'resize',true, ...
'color','black','marker',".", 'Markersize',3);
参数总结:
lx
和ly
是已转换的投影坐标。mask
是用来筛选显著点的逻辑数组。color
设置点的颜色.marker
使用点符号绘制。Markersize
设置点的大小。density控制点的密度
。resize控制点的大小和图像比例
。
小结:
使用 stipple
函数时,尤其是在投影地图上绘制显著点时,务必确保将经纬度数据转换为正确的投影坐标。
如果绘制出的显著点数量过少,可以通过调整 density
和 resize
等参数来实现更好的绘制效果。