您将如何在 Mathematica 中渲染这样的 map ? (例如,美国各州和加拿大各省可分别着色?)http://upload.wikimedia.org/wikipedia/commons/archive/1/18/20071029031002%21North_America_map_coloured.svg
我尝试导入 SVG 路径并构建多边形(使用基于 http://mathgis.blogspot.com/2009/11/make-us-county-thematic-map-using.html 的方法),但它们看起来不如链接的 SVG 中的曲线好看。内置数据库似乎没有美国各州和加拿大各省的形状:只有国家。
谢谢!
PS:这样做的目的是能够为州/省数据制作等值线图(即根据与该州/省相关的一些数据为州/省着色)
最佳答案
您可以使用 .kml 或 .kmz 文件来获取州/省和多边形的轮廓列表。例如,对于美国,您可以使用 this file .要提取多边形,您可以执行以下操作
usa = Import["http://code.google.com/apis/kml/documentation/us_states.kml",
"Data"];
transform[s_] := StringTrim[s, Whitespace ~~ "(" ~~ ___ ~~ ")"]
polygons = Thread[transform["PlacemarkNames" /. usa[[1]]] ->
("Geometry" /. usa[[1]])];
stateNames = polygons[[All, 1]];
然后多边形将是一个包含元素的列表
"state name" -> Polygon[points]
.函数transform
只是一个辅助函数,用于以所需格式从 .kml 文件中获取 PlacemarkNames(在这种情况下,从名称末尾去除“(年)”)。使用这些多边形,您可以使用
FaceForm[]
为各个多边形着色。假设我们有一个形式为 "state" -> value
的数据列表,例如data = Thread[regionNames -> RandomReal[{0, 1}, Length[regionNames]]];
然后我们可以根据
colourf = ColorData["Temperature"];
element[value_, poly_] := GraphicsGroup[{EdgeForm[Black], FaceForm[colourf[value]], poly}]
Graphics[{element @@@ Transpose[regionNames /. {data, polygons}]}]
看起来像
关于wolfram-mathematica - Mathematica 北美 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957067/