2015-04-09 3 views
3

У меня есть вектор Lat/Long, а другой - значения Z, которые мне нужно показать на 3d-карте, как и на рисунке справа. Я попробовал bar3, но это потрясающе, поскольку для этого требуется создание нескольких графиков.Участок 3d-баров на карте в Matlab

Вот код:

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

+0

Используя трюк отсюда: http://stackoverflow.com/questions/28991376/how-to-set -x-and-y-values-when-using-bar3-in-matlab/28992462 # 28992462 вы должны быть в состоянии найти свои бары в нужных положениях. Если вы разместите некоторые данные примера, я могу ответить на него. –

+0

Большое спасибо за комментарий. Эта запись, кажется, находится на решетке X, Y-матрице? –

+0

Вопрос: Как вы планируете строить карту? Можете ли вы показать мне код, из которого я могу начать работать? какую карту вы уже знаете, что хотите использовать или что-то в этом роде? Его трудно сопоставить данные для этого примера, особенно потому, что существует множество подходов, которые вы, возможно, не захотите следовать. –

ответ

2

Так основан в способности перемещения bar3 туда, куда вы хотите здесь есть простой код, который делает работу.

Вещи, которые не могут и быть интересными для вас:

1- Заполните карту. 2.-Установить лига 3.-Создать этикетки

2 и 3, их можно легко сделать. 1 Я не знаю.

Результат:

enter image description here

КОД:

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 
+0

Большое спасибо! –

Смежные вопросы