印度地图(R),每个邦的五个指标的不同值

印度地图(R),每个邦的五个指标的不同值,r,plot,ggplot2,gis,rgooglemaps,R,Plot,Ggplot2,Gis,Rgooglemaps,我想在R生成一张印度地图。我有五个指标,每个州有不同的值。我想用五种不同的颜色绘制气泡,它们的大小应该代表它们在每个状态下的强度。例如: 州A B C D E 喀拉拉邦-39,5,34,29,11 比哈尔邦-6,54,13,63,81 阿萨姆邦-55498915 48, 昌迪加尔-66,11,44,33,71 我已经浏览了一些与我的问题相关的链接: [1] [2] 但这些联系不能达到我的目的。在这方面的任何帮助都将不胜感激 我也试过了 library(mapproj) map(database=

我想在R生成一张印度地图。我有五个指标,每个州有不同的值。我想用五种不同的颜色绘制气泡,它们的大小应该代表它们在每个状态下的强度。例如:

州A B C D E 喀拉拉邦-39,5,34,29,11 比哈尔邦-6,54,13,63,81 阿萨姆邦-55498915 48, 昌迪加尔-66,11,44,33,71

我已经浏览了一些与我的问题相关的链接:

[1]

[2]

但这些联系不能达到我的目的。在这方面的任何帮助都将不胜感激

我也试过了

library(mapproj)
map(database= "world", regions  = "India", exact=T, col="grey80", fill=TRUE, projection="gilbert", orientation= c(90,0,90))

lat <- c(23.30, 28.38)

lon <- c(80, 77.12) # Lon and Lat for two cities Bhopal and Delhi

coord <- mapproject(lon, lat, proj="gilbert", orientation=c(90, 0, 90))

points(coord, pch=20, cex=1.2, col="red")
螺母壳内的问题包括: 1它没有给我地区层面的地块。甚至连国家边界都没有。 2如果我只有位置名称和对应的绘图值,如何在此绘图中创建数据的气泡或点?
3在libraryRgoogleMaps或libraryggplot2中可以轻松完成此操作吗?只是猜测一下,我对这些软件包不太了解

一旦你有了印度的shapefile,你就需要创建一个choropleth。这将采取的形状地图和颜色的每个国家在印度的梯度,反映你的数据。您可能需要创建一个包含五个图的面板,每个图显示印度及其州,并根据五个变量中的一个进行着色

对于其他可以将此答案推送到hr的人,这里是经过一点清理后的数据帧的dput

dput(df)
structure(list(State = c("Kerala", "Bihar", "Assam", "Chandigarh"
), A = c("39", "6", "55", "66"), B = c("5", "54", "498", "11"
), C = c("34", "13", "89", "44"), D = c("29", "63", "15", "33"
), E = c("11", "81", "48", "71")), .Names = c("State", "A", "B", 
"C", "D", "E"), row.names = c("Kerala", "Bihar", "Assam", "Chandigarh"
), class = "data.frame") 

一旦你有了印度的shapefile,你需要创建一个choropleth。这将采取的形状地图和颜色的每个国家在印度的梯度,反映你的数据。您可能需要创建一个包含五个图的面板,每个图显示印度及其州,并根据五个变量中的一个进行着色

对于其他可以将此答案推送到hr的人,这里是经过一点清理后的数据帧的dput

dput(df)
structure(list(State = c("Kerala", "Bihar", "Assam", "Chandigarh"
), A = c("39", "6", "55", "66"), B = c("5", "54", "498", "11"
), C = c("34", "13", "89", "44"), D = c("29", "63", "15", "33"
), E = c("11", "81", "48", "71")), .Names = c("State", "A", "B", 
"C", "D", "E"), row.names = c("Kerala", "Bihar", "Assam", "Chandigarh"
), class = "data.frame") 

正如@lawyeR所说,choropleth或专题地图更常用于表示地图上的变量。这将要求您为每个变量生成一个映射。让我举一个例子:

require("rgdal")  # needed to load shapefiles

# obtain India administrative shapefiles and unzip
download.file("http://biogeo.ucdavis.edu/data/diva/adm/IND_adm.zip", 
              destfile = "IND_adm.zip")
unzip("IND_adm.zip", overwrite = TRUE)

# load shapefiles
india <- readOGR(dsn = "shapes/", "IND_adm1")

# check they've loaded correctly with a plot
plot(india)

# all fine. Let's plot an example variable using ggplot2
require("ggplot2")
require("rgeos")  # for fortify() with SpatialPolygonsDataFrame types

india@data$test <- sample(65000:200000000, size = nrow(india@data),
                          replace = TRUE)

# breaks the shapefile down to points for compatibility with ggplot2
indiaF <- fortify(india, region = "ID_1")
indiaF <- merge(indiaF, india, by.x = "id", by.y = "ID_1")

# plots the polygon and fills them with the value of 'test'
ggplot() +
  geom_polygon(data = indiaF, aes(x = long, y = lat, group = group,
                                  fill = test)) +
  coord_equal()
最后,我注意到你在GIS SE上问了同样的问题。这被认为是一种不好的做法,人们普遍不赞成,所以我已经将这个问题标记为与此重复的问题。一般的经验法则是,尽量不要创建重复项


祝你好运

正如@lawyeR所说,choropleth或专题地图更常用于表示地图上的变量。这将要求您为每个变量生成一个映射。让我举一个例子:

require("rgdal")  # needed to load shapefiles

# obtain India administrative shapefiles and unzip
download.file("http://biogeo.ucdavis.edu/data/diva/adm/IND_adm.zip", 
              destfile = "IND_adm.zip")
unzip("IND_adm.zip", overwrite = TRUE)

# load shapefiles
india <- readOGR(dsn = "shapes/", "IND_adm1")

# check they've loaded correctly with a plot
plot(india)

# all fine. Let's plot an example variable using ggplot2
require("ggplot2")
require("rgeos")  # for fortify() with SpatialPolygonsDataFrame types

india@data$test <- sample(65000:200000000, size = nrow(india@data),
                          replace = TRUE)

# breaks the shapefile down to points for compatibility with ggplot2
indiaF <- fortify(india, region = "ID_1")
indiaF <- merge(indiaF, india, by.x = "id", by.y = "ID_1")

# plots the polygon and fills them with the value of 'test'
ggplot() +
  geom_polygon(data = indiaF, aes(x = long, y = lat, group = group,
                                  fill = test)) +
  coord_equal()
最后,我注意到你在GIS SE上问了同样的问题。这被认为是一种不好的做法,人们普遍不赞成,所以我已经将这个问题标记为与此重复的问题。一般的经验法则是,尽量不要创建重复项



祝你好运

你真的需要在每个州添加五个气泡吗?这似乎占据了相当大的空间;您可能没有足够的空间为一些小状态添加五个气泡。我想知道你是否想要五张分开的印度地图。你能提供你创建印度地图的代码吗?亲爱的律师和爵士乐,我遵循了上面链接中的代码,因为我对R中的地理地图没有任何知识。但我找不到这些代码适用于我。你们说得对,地图的空间会更小,特别是对于较小的州。我将尝试使用三个指标进行管理。由于GADM链接已更改,您链接的答案已过时。我已经对它们进行了编辑编辑应该很快就会上线,这应该可以让你开始绘制印度地图:@Molx:谢谢你的所有工作和r-fiddle上的代码。最后一行返回了一个错误:>IND您真的需要在每个状态中添加五个气泡吗?这似乎占据了相当大的空间;您可能没有足够的空间为一些小状态添加五个气泡。我想知道你是否想要五张分开的印度地图。你能提供你创建印度地图的代码吗?亲爱的律师和爵士乐,我遵循了上面链接中的代码,因为我对R中的地理地图没有任何知识。但我找不到这些代码适用于我。你们说得对,地图的空间会更小,特别是对于较小的州。我将尝试使用三个指标进行管理。由于GADM链接已更改,您链接的答案已过时。我已经对它们进行了编辑编辑应该很快就会上线,这应该可以让你开始绘制印度地图:@Molx:谢谢你的所有工作和r-fiddle上的代码。最后一行返回错误:>IND Oh抱歉!我不知道这件事。我以后会处理这件事的。谢谢你,菲尔。那很好,掌握事情的诀窍需要一段时间,所以我希望能有所帮助,而不是主观判断:谢谢你的回答。请注意,如果您在readOGR、india方面遇到问题,如果您只想要状态数据最有用的案例ig,则可以删除以开头的行india@.. 哪一个
只是为了测试而已,对不起!我不知道这件事。我以后会处理这件事的。谢谢你,菲尔。那很好,掌握事情的诀窍需要一段时间,所以我希望能有所帮助,而不是主观判断:谢谢你的回答。请注意,如果您在readOGR、india方面遇到问题,如果您只想要状态数据最有用的案例ig,则可以删除以开头的行india@.. 它只用于测试Anways和indiaF