Карта Индии в R с различными значениями пяти показателей для каждого штата Индии

Я хочу создать карту Индии в R. У меня есть пять показателей с разными значениями каждого штата. Я хочу построить пузыри с пятью разными цветами, и их размер должен отражать их интенсивность в каждом штате. Например:

State A B C D E
Kerala - 39, 5, 34, 29, 11
Bihar - 6, 54, 13, 63, 81
Assam - 55, 498, 89, 15, 48,
Chandigarh - 66, 11, 44, 33, 71

Я просмотрел несколько ссылок, связанных с моей проблемой:

[1] http://www.r-bloggers.com/nrega-and-indian-maps-in-r/

[2] R пакет для Индии?

Но эти ссылки не могли служить моей цели. Любая помощь в этом направлении будет принята с благодарностью.

Я также пытался

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) это можно легко сделать в library(RgoogleMaps) или же library(ggplot2)? (Просто предположение, я не знаю много об этих пакетах)

2 ответа

Как утверждает @lawyeR, картограмма (или тематическая) чаще используется для представления переменных на карте. Это потребует от вас создания одной карты для каждой переменной. Позвольте мне привести вам пример:

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. Это считается плохой практикой и, как правило, осуждается, поэтому я пометил этот вопрос как дубликат этого. Как правило, старайтесь не создавать дубликаты.

Удачи!

Как только у вас есть шейп-файл для Индии, вам нужно создать хороплет. Это возьмет карту шейпфул и раскрасит каждый штат Индии в градиент, отражающий ваши данные. Возможно, вы захотите создать панель из пяти графиков, каждый из которых показывает Индию и ее штаты, окрашенные в соответствии с одной из ваших пяти переменных.

Для тех, кто может толкнуть этот ответ, вот 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") 
Другие вопросы по тегам