【问题标题】:Plot 3d bars on a map in Matlab在 Matlab 的地图上绘制 3d 条形图
【发布时间】:2015-04-09 13:01:38
【问题描述】:

我有一个纬度/经度向量,还有一个需要在 3d 地图上显示的 Z 值,就像下图右侧的那个一样。我尝试了 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!! :(

关于如何做到这一点的任何想法? 谢谢!

【问题讨论】:

  • 使用这里的技巧:stackoverflow.com/questions/28991376/… 您应该能够在您想要的位置找到您的酒吧。如果您发布一些示例数据,我可能会回答。
  • 非常感谢您的评论。但该条目似乎位于网格 X、Y 矩阵上?
  • 问题:您打算如何绘制地图?你能告诉我一些我可以从哪里开始工作的代码吗?一些您已经知道要使用的地图或类似的东西?对于这个示例,很难对数据进行站点化,尤其是因为您可能不想遵循大量的方法。
  • 我刚刚添加了代码... thx
  • 无法共享特定的 shapefile,但它类似于此处的任何管理_0 shapefile:diva-gis.org/gdata

标签: matlab dictionary matlab-figure


【解决方案1】:

因此,基于将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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    相关资源
    最近更新 更多