在Matlab的地图上绘制3d条形图

时间:2015-04-09 13:01:39

标签: matlab dictionary matlab-figure

我有一个Lat / Long向量,另一个有Z值,我需要在3d地图上显示,就像下图右边的那个。我试过bar3,但它需要一些因为它需要创建多个图形。

这里有一些代码:

S4 = shaperead(filename)    
plot([S4.X],[S4.Y],'k'); % plots the map from a shapefile I loaded previously
XX = [-50 -51 ...];
YY = [-1 -2 ...];
ZZ = [ 2.2 3.2 ... ];
stem3(XX,YY,ZZ) % this is an option, but doesn't look good!! :(

关于我该怎么做的任何想法? THX!

enter image description here

1 个答案:

答案 0 :(得分:2)

因此,基于能够在此处重新定位bar3的能力,有一个简单的代码可以完成这项工作。

对你来说没有而且可能有趣的事情:

1-填写地图。    2.设置ligth    3.-创建标签

2和3,它们很容易完成。 1我不知道。

<强>结果:

enter image description here

<强> CODE:

clear;clc;

S = shaperead('usastatehi.shp')
S(2)=[]; % Delete Alaska
S(10)=[];% Delete Haway
hold on
plot([S.X],[S.Y],'k'); % plots the map from a shapefile I loaded previously
% syntetic data
 Y=[40,45,25];
 X=[-100,-85,-80];
 Z=[0.5 2.3 1.4];

 cmap=colormap(strcat('parula(',num2str(length(Z)),')')); % Create a colormap. Change parula for anything you preffer

 ar=abs(diff(ylim))/abs(diff(xlim));
 for ii=1:length(X)
    h=bar3(Z(ii));
    Xaux=get(h,'Xdata');
    Xaux=Xaux-1+X(ii);
    set(h,'Xdata',Xaux)


    Yaux=get(h,'Ydata');
    Yaux=Yaux-1+Y(ii);
    set(h,'Ydata',Yaux)

    set(h,'FaceColor',cmap(ii,:));

 end
 axis off