我可以在其中做一个简单的pcolor或imagesc绘图
dec=-90:1:90;
ra=180:-1:-180;
mydata=rand(181,361);
imagesc(ra,dec,mydata)
我如何使用Matlab使用Mollweide投影来绘制此图?
我可以很轻松地在python中完成此操作,但是Matlab中的映射功能对我来说我应该做的不清楚。
我的真实数据不是随机的,但是在这里最容易生成随机数据。
答案 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]);
答案 1 :(得分:0)
使用Matlab的映射命令-看上去确实不如m_map直观。
注意:要在上面的示例中使用此代码,请设置moonalbrefvec(1)= 1;
我不喜欢所产生的标签,所以我制作了自己的标签。
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);