Как построить в Matlab проекцию карты Моллвейда с заданным вектором широты (Nx1), вектором долготы (Mx1) и точками данных (NxM)

Я могу сделать простой сюжет pcolor или imagesc, где

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

Как мне построить это с помощью проекции Mollweide, используя Matlab?

Я могу сделать это на python довольно легко, но функции отображения в Matlab мне не совсем понятны, что я должен делать.

Мои реальные данные не случайны, но случайные данные было легче всего сгенерировать здесь.

2 ответа

Решение

Хорошо, спасибо Shamalaia за указание на m_map, который содержит m_pcolor.

 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]);

Использование команд отображения 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);
Другие вопросы по тегам