gpt4 book ai didi

wolfram-mathematica - Mathematica 北美 map

转载 作者:行者123 更新时间:2023-12-04 05:25:43 24 4
gpt4 key购买 nike

您将如何在 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}]}]

看起来像

Mathematica graphics

关于wolfram-mathematica - Mathematica 北美 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com