本周的文件交换选择

我们最好的用户提交

GEOM 2D

肖恩本周的选择是geom2d.通过大卫Legland

在MathWorks工作期间,我每天都在使用MATLAB,学习很多关于它的知识,尝试各种方法。但我忘记的一件事是,有些人并不是每天都使用它,但偶尔需要它来完成特定的任务。因此,当我有机会解决这样的问题时,它让我想起了我早年的经历,也提醒了我能够使用专业的高质量软件是多么的荣幸。

昨天,我们的一项节目经理来到了我的办公室,并希望我为她创建美国的地图,以不同的地区颜色编码。似乎直截了当吗?这是我为她创建地图的步骤的故事。

我知道我的头顶,那USAMAP.在里面映射的工具箱是我构建地图所需要的函数。所以我跑到上面链接的文档页面:

医生USAMAP.

Doc页面底部的第三个例子正是我正在寻找的。我几乎总是以示例开始,因为它更容易修改或删除而不是添加。作为一个额外的奖金,它已经排除了阿拉斯加和夏威夷,她不想要在她的地图上!

我复制了这个例子,并跑了它。我很快意识到我真正需要修改的线是以下一个;它甚至有一个很好的评论,注意当前的随机性。

FaceColors = modeyymbolspec('polygon',... {'index',[1 numel(状态)],'faceColor',... polcmap(numel(状态))});%笔记 - 颜色是随机的

我想Polcmap.可能工作像任何其他颜色地图功能,并采取独特的颜色数量来制作。我的任务涉及六个区域,所以我需要六种颜色。

图polcmap6 = polcmap(6);colormap colorbar (polcmap6)

轻微的胜利!

现在我需要索引每个州的地区的Colormap。我要求包含一个包含国家和地区指数的Excel表。

这很容易理解readtable

tstateregions = Readtable(“StateRegionsLookup.xlsx”);
警告:变量名被修改为有效的MATLAB标识符。

使用区域索引,我应该能够通过索引到colormap来绘制地图颜色编码:

图ax = usamap(“本土”);= shaperead('Usastatelo'“UseGeoCoords”, 真的,......'选择器'......{@(name)〜任何(strcmp(名称,{'阿拉斯加州'“夏威夷”})),“名字”});FaceColors = modeyymbolspec(“多边形”......“指数”,[1 numel(状态)],“FaceColor”......polcmap6(tstateregions.region,:)});Geoshow(斧头,州,“DisplayType”“多边形”......“SymbolSpec”,faceColors)弗拉姆gridmMlabel.Plabel.

但这并不看起来!所以出了什么问题,我看看了这些州并比较了他们:

表({状态(:)。名称}。',tstateregions.state,'variablenames',{'matlab'“超越”})
ans = MATLAB Excel  ______________________ ________________________ ' 阿拉巴马州的“阿拉巴马”“亚利桑那”“亚利桑那”阿肯色州的“阿肯色”加州的“加州”科罗拉多”“科罗拉多”“康涅狄格”“康涅狄格”“特拉华“特拉华州的佛罗里达州的“特区”乔治亚州的“佛罗里达”爱达荷州“格鲁吉亚”的伊利诺斯州”“爱达荷州”“印第安纳州”“伊利诺伊”“爱荷华”“印第安纳”“堪萨斯”“爱荷华”“肯塔基”“堪萨斯”“路易斯安那”“肯塔基”“缅因”“路易斯安那”“马里兰”“缅因”“马萨诸塞”“马里兰”“密歇根”“马萨诸塞”“明尼苏达”“密歇根”“密西西比”“明尼苏达”“密苏里”“密西西比”“蒙大拿”“密苏里”“内布拉斯加州”“蒙大拿”“内布拉斯加州”“新Hampshire' ''Nevada'' 'New Jersey' ''New Hampshire'' 'New Mexico' ''New Jersey'' 'New York' ''New Mexico'' 'North Carolina' ''New York'' 'North Dakota' ''North Carolina'' 'Ohio' ''North Dakota'' 'Oklahoma' ''Ohio'' 'Oregon' ''Oklahoma'' 'Pennsylvania' ''Oregon'' 'Rhode Island' ''Pennsylvania'' 'South Carolina' ''Rhode Island'' 'South Dakota' ''South Carolina'' 'Tennessee' ''South Dakota'' 'Texas' ''Tennessee'' 'Utah' ''Texas'' 'Vermont' ''Utah'' 'Virginia' ''Vermont'' 'Washington' ''Virginia'' 'West Virginia' ''Washington'' 'Wisconsin' ''West Virginia'' 'Wyoming' ''Wisconsin'' 'District of Columbia' ''Wyoming''

啊!华盛顿特区附加到MATLAB的运输状态边界文件的末尾,在那里它在Excel纸张中的字母顺序导致偏移量。简单的手动修复:

tstateregions = [tstateregions([1:7 9:end],:);tstateregions(8,:)];
图ax = usamap(“本土”);FaceColors = modeyymbolspec(“多边形”......“指数”,[1 numel(状态)],“FaceColor”......polcmap6(tstateregions.region,:)});Geoshow(斧头,州,“DisplayType”“多边形”......“SymbolSpec”,faceColors)弗拉姆gridmMlabel.Plabel.

现在你可能想知道这和什么有关系geom2d..我仍然需要在每个州加上两个字母的代码。为此,我需要一种方法来确定多边形的质心。我去了文件交换和搜索“多边形质心”,果然geom2d.有一个函数究竟是这样的!

II = 1:NUMER(状态)LATII =状态(ii).lat;%删除指示边框结束的NANlonii =州(ii).lon;Cent = Polygoncentroid(Latii(〜Isnan(Latii)),Lonii(〜Isnan(lonii)));Textm(分(1),分(2),Tstateregions.x2letter(ii))结束

你有它。

多边形质心函数只是这个记录良好、组织良好的工具箱中的几十个函数之一。有各种各样的数学工具,聚合和绘制几何原语,如多边形,线,射线,和多项式曲线。每一组函数都有自己的Contents.m文件,以便快速看到所有的功能和它们的功能的快速描述。这些函数有一个完整的帮助描述,许多都有一个示例。还有一些已经发布的示例文件,所以您可以在不运行它的情况下查看示例。总的来说,这是一个很棒的包,现在它可以加入它的哥哥,geom3d.还打出了“每周精选”的横幅!

注释

你有没有遇到过一个随机的一次性任务或活动,可以在MATLAB中快速解决,这让你感觉很好?

试一试,让我们知道你的想法这里或离开A.评论大卫。




发布与MATLAB®R2015b

|
  • 打印
  • 发送电子邮件

注释

要发表评论,请点击这里要登录您的MathWorks帐户或创建新的。