在 Matlab 的地图上绘制 3d 条
Plot 3d bars on a map in Matlab
我有一个 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!! :(
关于如何执行此操作的任何想法?
谢谢!
因此,基于将 bar3
重新定位到您想要的任何位置的能力,有一个简单的代码可以完成这项工作。
你不感兴趣但可能感兴趣的事情:
1- 填满地图。
2.-设置灯光
3.-创建标签
2和3,很容易搞定。 1 我不知道。
结果:
代码:
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
我有一个 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!! :(
关于如何执行此操作的任何想法? 谢谢!
因此,基于将 bar3
重新定位到您想要的任何位置的能力,有一个简单的代码可以完成这项工作。
你不感兴趣但可能感兴趣的事情:
1- 填满地图。 2.-设置灯光 3.-创建标签
2和3,很容易搞定。 1 我不知道。
结果:
代码:
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