R 如何绘制一个国家的区域,每个区域都有相应的值

R 如何绘制一个国家的区域,每个区域都有相应的值,r,geospatial,ggmap,R,Geospatial,Ggmap,特别是我在印度有一系列不同的地区,每个地区都有一个“市场份额”值 但是,我怎样才能在我的数据集中明确地包含这些区域,并使用Marketshare列对它们进行着色呢 注意:我已经看到了,但对于我的需求来说,它似乎过于复杂,我想知道是否有更简单的方法。正如hrbrmstr所提到的,如果你能表现出你所做的一些努力,那就太好了。在这里,我创建了两张地图。第一个是ggmap,另一个是ggplot。在示例代码中,地图缩放处于关闭状态,以便显示指定的所有三个区域。所以我修改了你的密码。您需要在地图顶部显示所

特别是我在印度有一系列不同的地区,每个地区都有一个“市场份额”值

但是,我怎样才能在我的数据集中明确地包含这些区域,并使用Marketshare列对它们进行着色呢


注意:我已经看到了,但对于我的需求来说,它似乎过于复杂,我想知道是否有更简单的方法。

正如hrbrmstr所提到的,如果你能表现出你所做的一些努力,那就太好了。在这里,我创建了两张地图。第一个是ggmap,另一个是ggplot。在示例代码中,地图缩放处于关闭状态,以便显示指定的所有三个区域。所以我修改了你的密码。您需要在地图顶部显示所需区域的多边形。为了获取数据,您可以使用
get\u data()
下载数据。然后,您需要将其子集。如链接问题所示,您需要经历一个合并过程,以便将
marketshare
添加到最终数据框中。我收集了每个地区的id,并用
marketshare
创建了一个数据框,即
foo
temp
是包含多边形信息以及
marketshare
的最终数据帧。使用
marketshare
进行
fill
并绘制地图

library(raster)
library(ggmap)
library(ggplot2)

### Get India data
india <- getData("GADM", country = "India", level = 2)

map <- get_map("India", zoom = 4, maptype = "toner-lite")
regions <- data.frame(Region=c("Telangana", "Tamil Nadu", "Jammu and Kashmir"), Marketshare=c(.25, .30, .15))

states <- subset(india, NAME_1 %in% regions$Region)

ind1 <- states$ID_2[states$NAME_1 == "Telangana"]
ind2 <- states$ID_2[states$NAME_1 == "Tamil Nadu"]
ind3 <- states$ID_2[states$NAME_1 == "Jammu and Kashmir"]

states <- fortify(states)

foo <- data.frame(id = c(ind1, ind2, ind3),
                  marketshare = rep(regions$Marketshare, times = c(length(ind1), length(ind2), length(ind3))))

temp <- merge(states, foo, by = "id")

ggmap(map) +
geom_map(data = temp, map = temp,
         aes(x = long, y = lat, map_id = id, group = group, fill = marketshare),
         colour = "grey50", size = 0.3) +
theme(legend.position = "none")

请在这里至少表现出一些努力。关于如何阅读形状文件和制作choropleth,几乎有无数的例子。链接到一个过于复杂的q/a并不能免除你的一些努力。除了一个链接之外,您还做了哪些研究?对于您相当简单的需求,哪些研究不起作用?
library(ggmap)
map <- get_map("India", zoom=6, maptype="toner-lite")
ggmap(map)
library(raster)
library(ggmap)
library(ggplot2)

### Get India data
india <- getData("GADM", country = "India", level = 2)

map <- get_map("India", zoom = 4, maptype = "toner-lite")
regions <- data.frame(Region=c("Telangana", "Tamil Nadu", "Jammu and Kashmir"), Marketshare=c(.25, .30, .15))

states <- subset(india, NAME_1 %in% regions$Region)

ind1 <- states$ID_2[states$NAME_1 == "Telangana"]
ind2 <- states$ID_2[states$NAME_1 == "Tamil Nadu"]
ind3 <- states$ID_2[states$NAME_1 == "Jammu and Kashmir"]

states <- fortify(states)

foo <- data.frame(id = c(ind1, ind2, ind3),
                  marketshare = rep(regions$Marketshare, times = c(length(ind1), length(ind2), length(ind3))))

temp <- merge(states, foo, by = "id")

ggmap(map) +
geom_map(data = temp, map = temp,
         aes(x = long, y = lat, map_id = id, group = group, fill = marketshare),
         colour = "grey50", size = 0.3) +
theme(legend.position = "none")
india.map <- fortify(india)

ggplot() +
geom_map(data = india.map, map = india.map,
         aes(x = long, y = lat, map_id = id, group = group),
         colour = "grey50", size = 0.3) +
geom_map(data = temp, map = temp,
         aes(x = long, y = lat, map_id = id, group = group, fill = factor(marketshare)),
         colour = "grey50", size = 0.3) +
theme(legend.position = "none")