Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 仅根据不同数据框中的值为特定国家/地区着色_R_Ggplot2_Maps_Data Visualization - Fatal编程技术网

R 仅根据不同数据框中的值为特定国家/地区着色

R 仅根据不同数据框中的值为特定国家/地区着色,r,ggplot2,maps,data-visualization,R,Ggplot2,Maps,Data Visualization,我是R方面的初学者,我正在尝试制作一张世界地图,根据人均GDP为特定国家着色,并存储在另一个数据框架中。这是我的代码(在线找到): 我如何才能克服这个问题,并使R颜色的国家,我在我的数据框架 多谢各位 下面是一个工作示例,并遵循@stefan关于将数据连接到地图数据框的建议 在本例中,我创建了一个有限的数据框架,其中包含选定国家的gdp信息my_gdp: gdp_data <- data.frame( name = c("Australia", "Chin

我是R方面的初学者,我正在尝试制作一张世界地图,根据人均GDP为特定国家着色,并存储在另一个数据框架中。这是我的代码(在线找到):

我如何才能克服这个问题,并使R颜色的国家,我在我的数据框架


多谢各位

下面是一个工作示例,并遵循@stefan关于将数据连接到地图数据框的建议

在本例中,我创建了一个有限的数据框架,其中包含选定国家的gdp信息
my_gdp

gdp_data <- data.frame(
  name = c("Australia", "China", "Brazil"),
  my_gdp = c(1.43, 13.61, 1.86)
)

       name my_gdp
1 Australia   1.43
2     China  13.61
3    Brazil   1.86
然后,您仅使用最后一个数据帧,
plot\u data
,来创建绘图。这将比在
ggplot
中引用两个不同的数据框更容易管理,并确保绘制国家和填写gdp的数据行数相同

ggplot(data = plot_data) +
  geom_sf(aes(fill = my_gdp)) +
  scale_fill_viridis_c(option = "plasma", trans = "sqrt") +
  ggtitle("World map (GDP in trillions $)", subtitle = paste0("(", length(unique(world$name)), " countries)"))
绘图


为什么不将您的数据加入地图df?@stefan我应该为缺失的59个国家的GDP制作虚拟变量吗?不。不需要制作任何虚拟变量。加入缺失国家时,默认情况下将分配NAs。如果加入出现问题,我建议您在帖子中添加一段GDP数据,例如在R控制台中键入
dput(head(GDP.data))
,并将以
结构(…
开头的输出粘贴到帖子中。
gdp_data <- data.frame(
  name = c("Australia", "China", "Brazil"),
  my_gdp = c(1.43, 13.61, 1.86)
)

       name my_gdp
1 Australia   1.43
2     China  13.61
3    Brazil   1.86
plot_data <- merge(world, gdp_data, by = "name", all.x = TRUE)
ggplot(data = plot_data) +
  geom_sf(aes(fill = my_gdp)) +
  scale_fill_viridis_c(option = "plasma", trans = "sqrt") +
  ggtitle("World map (GDP in trillions $)", subtitle = paste0("(", length(unique(world$name)), " countries)"))