如何在Matlab中绘制给出纬度向量(Nx1),经度向量(Mx1)和数据点(NxM)的Mollweide地图投影

时间:2018-07-20 22:34:00

标签: matlab plot map-projections

我可以在其中做一个简单的pcolor或imagesc绘图

 dec=-90:1:90;
 ra=180:-1:-180;
 mydata=rand(181,361);
 imagesc(ra,dec,mydata)

我如何使用Matlab使用Mollweide投影来绘制此图?

我可以很轻松地在python中完成此操作,但是Matlab中的映射功能对我来说我应该做的不清楚。

我的真实数据不是随机的,但是在这里最容易生成随机数据。

2 个答案:

答案 0 :(得分:0)

好的,感谢shamalaia将我指向包含m_pcolor的m_map。

 figure(1);clf(1);
 dec=-90:1:90;
 ra=180:-1:-180;
 mydata=rand(181,361);
 m_proj('mollweide','clongitude',0);
 obj=m_pcolor(ra,dec,mydata); 
 shading interp; 
 m_grid('xaxislocation','middle','xtick',8,'ytick',7,'fontsize',7,'color','white');

 mymap=colormap('jet');
 colormap(mymap);
 h=colorbar('h');
 caxis([0 1]);

enter image description here

答案 1 :(得分:0)

使用Matlab的映射命令-看上去确实不如m_map直观。

注意:要在上面的示例中使用此代码,请设置moonalbrefvec(1)= 1; enter image description here

我不喜欢所产生的标签,所以我制作了自己的标签。

clear;
figure(2); clf(2);
load moonalb % a 540x1080 matrix of values is loaded along with moonalbrefvec=[3;90;0]
moonalbrefvec(1)=3; % this is the subdivisions per degree - thus 180*3=540 & 3*360=1080
moonalbrefvec(2)=90; % NW lat value
moonalbrefvec(3)=180; % NW long value
mymap=colormap('jet'); mymap(1,1:3)=1;colormap(mymap);
axesm('MapProjection','mollweid','MapLatLimit',[-90 90],'Gcolor','white','GLineWidth',2.0,'MLineLocation',[-135 -90 -45 0 45 90 135],'PLineLocation',30) ; 
axis off;caxis([0 500]); 
grid on;
plabel('LabelFormat','none');
mlabel('on');
parallel='equator';
mlabel(parallel);
mlabel('FontColor','white');
mlabel('off');
gridm('on');
geoshow(moonalb, moonalbrefvec, 'DisplayType', 'texturemap');
plabel('off')
c=colorbar('location','southoutside','box','on','color',[0 0 0]);
c.Label.String='T_{sky} (K)';
c.Limits=[0 500];
c.Ticks=0:50:500;
c.FontSize=12;
textm(-5,-135,'3 h','color','white','fontsize',25);
textm(-5,-90,'6 h','color','white','fontsize',25);
textm(-5,-45,'9 h','color','white','fontsize',25);
textm(-5,0,'12 h','color','white','fontsize',25);
textm(-5,45,'15 h','color','white','fontsize',25);
textm(-5,90,'18 h','color','white','fontsize',25);
textm(-5,90,'18 h','color','white','fontsize',25);
textm(-5,135,'21 h','color','white','fontsize',25);