#r #r-leaflet
Вопрос:
Я пытаюсь нарисовать карту мира хлоропетом, но на этикетках не отображаются правильные данные. Я не уверен, в чем может быть проблема. См.Ниже воспроизводимый код. Как только я наведу курсор на США, появится другая метка.
## Source of shape file
# http://thematicmapping.org/downloads/world_borders.php
## Set working directory ##
## Download the shape files to working directory ##
download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip" , destfile="TM_WORLD_BORDERS_SIMPL-0.3.zip")
## Unzip them ##
unzip("TM_WORLD_BORDERS_SIMPL-0.3.zip")
## OR ## You can directly connect to download link and download to a temp folder as well ##
## Load Required Packages##
library(leaflet)
library(rgdal) # R 'Geospatial' Data Abstraction Library. Install package if not already installed.
## Load the shape file to a Spatial Polygon Data Frame (SPDF) using the readOGR() function
myspdf = readOGR(dsn=getwd(), layer="TM_WORLD_BORDERS_SIMPL-0.3")
head(myspdf)
summary(myspdf)
# using the slot data
head(myspdf@data)
head(myspdf$NAME, n=220)
#Get my variable
newdff<-c("Ghana", "Grenada", "Guyana", "India", "Jamaica", "Kenya", "United States","Canada")
val<-c(1,2,4,5,5,1000,20000, 100)
df<-data.frame(newdff,val)
df
summary(df)
labels <- sprintf(
"<strong>Country:%s</strong><br/>Population:%g",
df$newdff, df$val)%>% lapply(htmltools::HTML)
pal <- colorNumeric("OrRd", df$val)
#
total<-subset(myspdf, myspdf$NAME %in% df$newdff)
head(total@data)
## Create map object and add tiles and polygon layers to it
leaflet(data=total) %>%
addTiles() %>%
addPolygons(fillColor = "green",
highlight = highlightOptions(weight = 1,
color = "red",
fillOpacity = 0.1,
bringToFront = TRUE),
label=labels)
Ответ №1:
Хотя я не до конца понимаю ручное создание вектора «val» ,
Ссылка на «общий» фрейм данных при создании «ярлыков», похоже, работает.
## Source of shape file
# http://thematicmapping.org/downloads/world_borders.php
## Set working directory ##
## Download the shape files to working directory ##
download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip" , destfile="TM_WORLD_BORDERS_SIMPL-0.3.zip")
## Unzip them ##
unzip("TM_WORLD_BORDERS_SIMPL-0.3.zip")
## OR ## You can directly connect to download link and download to a temp folder as well ##
## Load Required Packages##
library(leaflet)
library(rgdal) # R 'Geospatial' Data Abstraction Library. Install package if not already installed.
## Load the shape file to a Spatial Polygon Data Frame (SPDF) using the readOGR() function
myspdf = readOGR(dsn=getwd(), layer="TM_WORLD_BORDERS_SIMPL-0.3")
head(myspdf)
summary(myspdf)
# using the slot data
head(myspdf@data)
head(myspdf$NAME, n=220)
#Get my variable
newdff<-c("Ghana", "Grenada", "Guyana", "India", "Jamaica", "Kenya", "United States","Canada")
val<-c(1,2,4,5,5,1000,20000, 100)
df<-data.frame(newdff,val)
df
summary(df)
labels <- sprintf(
"<strong>Country:%s</strong><br/>Population:%g",
df$newdff, df$val)%>% lapply(htmltools::HTML)
pal <- colorNumeric("OrRd", df$val)
#
total<-subset(myspdf, myspdf@data$NAME %in% df$newdff)
labels <- sprintf(
"<strong>Country:%s</strong><br/>Population:%g",
total$NAME, df$val)%>% lapply(htmltools::HTML)
head(total@data)
## Create map object and add tiles and polygon layers to it
leaflet(data=total) %>%
addTiles() %>%
addPolygons(fillColor = "green",
highlight = highlightOptions(weight = 1,
color = "red",
fillOpacity = 0.1,
bringToFront = TRUE),
label=labels)
Комментарии:
1. Большое тебе спасибо, Сьюзен! Это сработало! Похоже, что значения вектора val также неправильно отображаются в метке. Я не уверен, что может быть не так.
2. Вместо того, чтобы иметь значения в отдельном векторе. Мне нравится добавлять значения во фрейм данных с именем, включенным в фрейм данных, и использовать функцию слияния() из пакета sp, чтобы присоединить df к пространственному объекту