0

我想创建一张地图(或者,更好的是,一系列地图)来代表人口如何随着时间的推移而进化。

为了清楚起见,我将使用tmap's 内置的metro示例数据。

library(tmap)
data("World", "metro")

> str(metro@data)
'data.frame':   436 obs. of  12 variables:
 $ name     : chr  "Kabul" "Algiers" "Luanda" "Buenos Aires" ...
 $ name_long: chr  "Kabul" "El Djazair  (Algiers)" "Luanda" "Buenos Aires" ...
 $ iso_a3   : chr  "AFG" "DZA" "AGO" "ARG" ...
 $ pop1950  : num  170784 516450 138413 5097612 429249 ...
 $ pop1960  : num  285352 871636 219427 6597634 605309 ...
 $ pop1970  : num  471891 1281127 459225 8104621 809794 ...
 $ pop1980  : num  977824 1621442 771349 9422362 1009521 ...
 $ pop1990  : num  1549320 1797068 1390240 10513284 1200168 ...
 $ pop2000  : num  2401109 2140577 2591388 12406780 1347561 ...
 $ pop2010  : num  3722320 2432023 4508434 14245871 1459268 ...
 $ pop2020  : num  5721697 2835218 6836849 15894307 1562509 ...
 $ pop2030  : num  8279607 3404575 10428756 16956491 1718192 ...
> 

可以看出,数据的结构很宽泛,其中有几个变量(每年一个),它们有自己的一组值。我知道我可以使用 tmap 的构面并创建一个包含每列名称的向量,如下所示:

tm_shape(World) +
  tm_polygons() +
tm_shape(metro) +
  tm_dots(c("pop2010", "pop2020"), col = c("pop2010", "pop2020"),
          size = c("pop2010", "pop2020"), border.col = "black")

这就是输出:

在此处输入图像描述

可以看出数据已经搞砸了,因为我希望每个方面只显示每年的人口(大小和颜色),但我不知道形状来自哪里。

你能告诉我我做错了什么吗?

4

1 回答 1

1

当您只有一个变量(人口规模)时,我不确定为什么要同时显示人口的大小和颜色。

您可以尝试以下方法:

library(tmap)
data("World", "metro")
tm_shape(World) + tm_polygons() + 
tm_shape(metro) + tm_dots(size = c("pop2010", "pop2020"), col = "red", border.col = "black")

它将产生以下图片 - 都会区地图,点的大小标记人口规模。红色是我的重点(默认为黑色)。

地铁人口分布图

于 2017-11-09T07:46:44.613 回答