本周文件交换精选

我们最好的用户提交

散点酒吧

肖恩本周的选择是scatterbar3通过马努Raghavan

内容

画的酒吧

如果你曾经想在MATLAB中画一个条形图,你可能会遇到:酒吧barhbar3bar3h,也许在较新的版本中直方图histogram2

这允许你做各种条形图与堆叠和对齐选项。例如,

y =兰德(5、1);Y = [Y 1-y];酒吧= bar3h (1:5, y,“堆叠”);传奇(酒吧,{“A型”“B型”})

或者:

= bar(1:7,abs([0.7 0.5 0;0.6 - 0.5 0;0.55 0.5 0.1;0.52 0.5 0.2;0.4 0.5 0.4;0.9 0 0.5;0.9 0 0.4]));甘氨胆酸ax =;斧子。YLim = [0 1]; ax.XTickLabel = day(datetime(1,1,1:7),'简称');传奇(酒吧,{“睡眠”“咖啡”“啤酒”},“位置”“西北”

然而,这些都需要一个网格。网格不必是均匀的,但必须是单调增加的。

histogram2 (randn (100 1), randn (100,1))

描绘波士顿的天际线

如果我想画波士顿的天际线呢?现在我需要一个不均匀的网格。为了将数据输入MATLAB,我进行了复制
的表维基百科然后导入到MATLAB中表格

负载BostonBuildingsdisp (BostonBuildings)
BuildingName BuildingHeight LatLonDMS  _______________________________ ______________ _____________________________ ' 200克拉伦登790年(241年)“42°20“57.4”N 71°04”29.2“W”“保诚塔“749(228)“42°20“49.78”N 71°04”57.08“W”“千禧塔“685(209)“42°21”21.01“N 71°3 33.91 W的联邦储备银行大楼的614(187)“42°21”08.55 N71°03′14.82″W' 'One Boston Place' '601 (183)' '42°21′31″N 71°03′30″W' 'One International Place' '600 (183)' '42°21′20.8″N 71°03′07.5″W' '100 Federal Street' '591 (180)' '42°21′18″N 71°03′22″W' 'One Financial Center' '590 (180)' '42°21′08.6″N 71°03′23.0″W' '111 Huntington Avenue' '554 (169)' '42°20′48.38″N 71°04′52.86″W' 'Two International Place' '538 (164)' '42°21′23″N 71°03′06″W' 'One Post Office Square' '525 (160)' '42°21′25″N 71°03′19″W' 'One Federal Street' '520 (159)' '42°21′24″N 71°03′25″W' 'Exchange Place' '510 (156)' '42°21′30″N 71°03′23″W' '60 State Street' '509 (155)' '42°21′33″N 71°03′23″W' 'One Beacon Street' '505 (154)' '42°21′30″N 71°03′39″W' 'One Lincoln Street' '503 (153)' '42°21′09″N 71°03′29″W' '28 State Street' '500 (152)' '42°21′34″N 71°03′27″W' 'Custom House Tower' '496 (151)' '42°21′32.65″N 71°03′12.13″W' 'Berkeley Building' '495 (151)' '42°20′59.78″N 71°04′21.55″W' '33 Arch Street' '477 (145)' '42°21′21″N 71°03′28″W' 'State Street Bank Building' '477 (145)' '42°21′22″N 71°03′15″W' 'Millennium Place Tower I' '475 (145)' '42°21′11″N 71°03′47″W' '125 High Street' '452 (138)' '42°21′19″N 71°03′12″W' '100 Summer Street' '450 (137)' '42°21′14″N 71°03′27″W' 'Millennium Place Tower II' '446 (136)' '42°21′11″N 71°03′47″W' 'McCormack Building' '401 (122)' '42°21′34″N 71°03′44″W' 'Keystone Building' '400 (122)' '42°21′15″N 71°03′16″W' 'Harbor Towers I' '400 (122)' '42°21′28.64″N 71°02′59.89″W'

我需要从高度删除米,并在度-分-秒(DMS)转换纬度到纬度和经度。
首先是高度,所有的建筑都有三个数字,所以我要把前三个数字变成一个数字。

BostonBuildings。BuildingHeight = cellfun (@ (x) str2double (x (1:3)) BostonBuildings.BuildingHeight);

下一个DMS到lat/lon。这里有一个很好的函数映射的工具箱dms2degrees,才能做到这一点。首先,我需要把琴弦分成几段。到目前为止,我一直采用简单的方法来获取数据并进行操作。现在我要让事情变得更困难,用一些来唤醒我的大脑正则表达式.这是表达式:

表达=”((\ d。){1,5})”

让我用英语解释一下:

  • ()围绕整个表达式,它捕获标记,我要匹配的字符串,以便我以后可以使用它。Use()和“令牌”标记以提取字符串的内容。
  • []允许方括号内的任何内容都算作匹配。
  • \ d。说我可以匹配数字,D.或时间。
  • {1,5}这意味着我可以匹配数字和周期1到5次,以捕获单个数字或28.64,5位长。
t = regexp (BostonBuildings。LatLonDMS、表达、“令牌”);

结果是一个单元格,因为regexp不知道它将匹配多少令牌(如果有的话)。通过垂直连接解开单元格
然后将每个结果单元格的第一个元素转换为一个数字(它们仍然是字符串):

dmsdms = Vertcat(t {:});DMSDMS = Cellfun(@(x)str2double(x {1}),dmsdms);

现在我们使用映射工具箱函数给我们纬度和经度以学位,并将其粘在桌子上。

BostonBuildings。LatDeg = dms2degrees (dmsdms (: 1:3));前三个拉特BostonBuildings。LonDeg = dms2degrees (dmsdms (: 4:6));%第二三londisp (BostonBuildings (1:5, {“BuildingName”“BuildingHeight”“LatDeg”'londeg'}))
建筑名称建筑高度LatDeg LonDeg _______________________________ __________________________ '200克拉伦登' 790 42.349 71.075 '保德信大厦' 749 42.347 71.083 '千禧塔' 685 42.356 71.059 '联邦储备银行大楼' 614 42.352 71.054 '波士顿广场' 601 42.359 71.058

位置在纬度和经度,我将它们投影到x/y中用于绘图使用projfwd

[x, y] = =“墨卡托”)、BostonBuildings.LatDeg BostonBuildings.LonDeg);

最后,我们可以调用scatterbar3 resscaling。

scatterbar3(x*10,y*10,BostonBuildings.BuildingHeight,0.00025) ax = gca;斧子。XTick = [];斧子。YTick = [];视图(16日8)从Mass Pike东行大致视野zlabel (的高度(英尺)

如果你住在波士顿或附近,不知道第三高的建筑是什么,那就是千禧大厦
现在施工塔。

评论

吃点心对你有帮助吗?你想用它来可视化什么类型的数据?

请留下留言让我们知道这里评论>或留下一个评论在这里制造。

发布与MATLAB®R2016a

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击这里登录到您的MathWorks帐户或创建一个新帐户。