Matlab 带有m_贴图投影的缺失点

Matlab 带有m_贴图投影的缺失点,matlab,Matlab,我正在使用matlab中的m_map包生成一些值的全局映射 以下是一个例子: lat2 = [-54.54,-33.15,-8.64,-1.3,5.8,15.35,30.7,32.86,37.54,40.25,... 43.84,45.95,47.65,49.38,51.04,53.33,54.70,56.33,58.59,60.02,60.84,... 62.09,63.15,64.15,66.06]; lon2 = [-68.02,-52.84,26.39,33.22,37.

我正在使用matlab中的m_map包生成一些值的全局映射

以下是一个例子:

lat2 = [-54.54,-33.15,-8.64,-1.3,5.8,15.35,30.7,32.86,37.54,40.25,...
    43.84,45.95,47.65,49.38,51.04,53.33,54.70,56.33,58.59,60.02,60.84,...
    62.09,63.15,64.15,66.06];
lon2 = [-68.02,-52.84,26.39,33.22,37.54,-83.84,90.66,119.30,89.34,-121.19,...
    -77.76,-60.83,9.2,-94.91,-90.8,-100.13,-97.58,-76.29,-112.08,-106.06,...
    31.38,28.52,29.70,-108.45,30.97];

figure(1);
m_proj('Mollweide'); %clongitude, 0
m_coast('patch','k');
m_grid('xaxislocation','middle');
for i = 1:length(lat2);
    m_line(lon2(i),lat2(i),'marker','o','markersize',4,'color','k','MarkerFaceColor','r');
end    

figure(2);
m_proj('Mollweide','clongitude', 0);
m_coast('patch','k');
m_grid('xaxislocation','middle');
for i = 1:length(lat2);
    m_line(lon2(i),lat2(i),'marker','o','markersize',4,'color','k','MarkerFaceColor','r');
end    

在两个投影中使用完全相同的lat和lon值。为什么亚洲点没有出现在第一张地图上?只有当我不将0设置为图形的中心时,它们才会显示


如有任何建议,将不胜感激

这似乎是m_map的一个bug。问题似乎是180W以东不会有什么阴谋。因此,在您的第一张地图中:

m_plot(-175,-40,'r.') % this works
m_plot(175,-40,'r.') % this doesn't
但是

工作。请注意,如果您这样做,则会发生相反的情况

m_proj('Mollweide','clongitude', 240); 
在后一种情况下,仅绘制亚洲的数据点

一个快速(但不是很好)的解决方法是将所有(+)经度点转换为(-)经度

p、 对于循环,您不需要这样做:

m_plot(lon2,lat2,'ko','markersize',4,'MarkerFaceColor','r');
m_plot(lon2,lat2,'ko','markersize',4,'MarkerFaceColor','r');