All comments and opinions expressed on Zhihu are mine alone and do not necessarily reflect those of my employers, past or present.
不管你拿MATLAB来做什么,相信很多用户都会认同MATLAB的数据可视化非常方便。下面就简单介绍下在新版2017b中引入的结合地理位置和数据的新函数geobubble。
老板:myc,下周我要给神秘投资人做PPT了,快给我一份美国各州的GDP的图。
准备数据
我们首先获取美国各州的GDP(50州+DC特区)
geobubble需要知道经度和纬度的信息,我们可以用多种方式将州名转化为经纬度。这里我们选用MATLAB的Mapping Toolbox自带的美国51州的数据和shaperead函数
usaState = shaperead('usastatelo');
allStates = {usaState.Name};
i = 1;
for state = gdpTable.stateName'
idx = allStates==state;
lat(i) = usaState(idx).LabelLat;
lon(i) = usaState(idx).LabelLon;
i = i + 1;
end
% 更新table
gdpTable.Lat = lat';
gdpTable.Lon = lon';
现在我们有了各州的gdp及经纬度,数据就准备好了
数据可视化
下面我们使用geobubble, myc指定了Lat和Lon两列作为经纬度
geobubble(gdpTable,'Lat','Lon')
老板:图是不错,只是好像没有显示出各州gdp的数据?
map = geobubble(gdpTable,'Lat','Lon','SizeVariable','gdp');
老板:嗯。。。意思到了,就是看不太清楚,没有冲击力
map.BubbleWidthRange = [5,100]
老板:嗯,冲击力有了,颜色有点单调
myc:(你想怎样……)老板,我们可以用颜色来表示另一维的数据
老板:嗯,那我们把各州秋天的平均气温加上吧
myc:好(这到底是在要给谁做PPT)
myc匆忙地加入了新的ColorVariable
geobubble(gdpTable,'Lat','Lon','SizeVariable','gdp','ColorVariable','FallTemp')
% MATLAB 报错
Expected ColorData to be one of these types:
categorical
Instead its type was double.
myc:原来颜色需要是categorical类型,那就将各州分成“冻成狗”,“好舒服”,“热成狗” 三个类吧
我们可以用discretize这个函数很方便地将数据进行分类(这里用10.5ºC和15ºC作为分界)
tempZone = discretize(gdpTable.FallTemp,[-inf,10.5,15,inf],'categorical',{'cold','normal','hot'});
% 更新table
gdpTable.zone = tempZone;
% 更新map
map.SourceTable = gdpTable;
map.ColorVariable = 'zone';
老板:不错,没想到这么快就能将数据表现的既有冲击力又五彩缤纷
myc:一般一般,不知道老板你这又是要GDP又是要秋天平均气温,是想表达什么?
老板:最近气温骤降,我想给大家发点保暖用品。我想用这图告诉投资人,我们在如此寒冷的条件下创造了这么多GDP,是多么不容易。
myc:老板真是太善解人意了,不如让投资人给大家发点显卡暖暖脚吧。
老板:想多了吧,我们的投资人。。。
。
。
。
。
。
是做秋裤的
祝大家:jack_o_lantern:快乐,打好流感疫苗,注意保暖
~完~
注意:本文来自MATLAB。本站无法对本文内容的真实性、完整性、及时性、原创性提供任何保证,请您自行验证核实并承担相关的风险与后果!
CoLaBug.com遵循[CC BY-SA 4.0]分享并保持客观立场,本站不承担此类作品侵权行为的直接责任及连带责任。您有版权、意见、投诉等问题,请通过[eMail]联系我们处理,如需商业授权请联系原作者/原网站。