我想创建一张地图(或者,更好的是,一系列地图)来代表人口如何随着时间的推移而进化。
为了清楚起见,我将使用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")
这就是输出:
可以看出数据已经搞砸了,因为我希望每个方面只显示每年的人口(大小和颜色),但我不知道形状来自哪里。
你能告诉我我做错了什么吗?