stipple函数的坑......matlab绘制显著点

发布于:2025-02-11 ⋅ 阅读:(42) ⋅ 点赞:(0)

序:

臭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_era5lat_era5 是经纬度数据,lxly 是转换后的投影坐标。

其次,要通过两个函数来控制点的密集!!!很重要!!

在某些情况下,使用默认设置时,绘制的显著点可能会非常少,甚至只有几个点。这通常是因为 stipple 函数的默认参数设置不适合你的数据分布,导致某些显著点无法显示。可以试一下调节以下参数。

  1. 'density':控制点的密度。增大该值可以使更多的点被绘制。
  2. 'resize':控制点的大小和图像的缩放比例。将其设置为 true 可以自动调整图像的显示。
    [lx,ly] = m_ll2xy(lon_era5,lat_era5);
    stipple(lx,ly,mask,'density',350,'resize',true, ...
        'color','black','marker',".", 'Markersize',3);

参数总结:

  • lxly 是已转换的投影坐标。
  • mask 是用来筛选显著点的逻辑数组。
  • color设置点的颜色.
  • marker使用点符号绘制。
  • Markersize设置点的大小。
  • density控制点的密度
  • resize控制点的大小和图像比例

小结:

使用 stipple 函数时,尤其是在投影地图上绘制显著点时,务必确保将经纬度数据转换为正确的投影坐标

如果绘制出的显著点数量过少,可以通过调整 densityresize 等参数来实现更好的绘制效果。


网站公告

今日签到

点亮在社区的每一天
去签到