在AddCircleMarkers中按nrow设置半径

问题描述 投票:0回答:1

我有几个城市的 400,000 行数据(

data
)。我想通过传单可视化它们的位置以及不同的属性。例如,我想根据给定城市的样本数设置圆圈大小。我得到了正确的位置,但无法改变半径。我在下面尝试了这个,其中
CityCoordinateData
是 3 列的 df:所有城市的单行,即位置、它们的经度和纬度,以及
unique(data$City)
CityCoordinateData$Location

具有相同的元素
m<-leaflet() %>%
      addTiles() %>% 
      setView(20, 47, zoom = 13) %>% 
      addCircleMarkers(CityCoordinateData$Lon, CityCoordinateData$Lat, radius=nrow(data[grep(CityCoordinateData$Location, data$City),])

Grep 似乎只使用第一个元素的 nrow。我也尝试过这个,它开始运行但从未完成:

radius=nrow(subdata[grep(paste(CityCoordinateData$Location,collapse = "|"), data$City, value=TRUE),]) 

数据样本可以这样模拟:

CityCoordinateData <- data.frame(Location=as.factor(c("Dorog", "Eger", "Erd")), Lon=c(17,18,19), Lat=c(40,41,42))
data <- data_sample<-data.frame(City=as.factor(c("Dorog", "Eger", "Erd", "Dorog", "Dorog", "Eger")), Variable=c(11,12,13,14,15,16))

因此,在这个示例中,我希望位置“Dorog”由半径为 3、“Eger”2 和“Erd”1 的圆标记。

r shiny r-leaflet
1个回答
1
投票

您的数据每个位置都有多个值。如果这是正确的,每个位置都会有几个圆圈。这是我尝试过的代码。

library(leaflet)

CityCoordinateData <- data.frame(Location=c("Dorog", "Eger", "Erd"), 
                                 Lon=c(17,18,19), Lat=c(40,41,42))
data<-data_sample <- data.frame(City=c("Dorog", "Eger", "Erd", "Dorog", "Dorog", "Eger"), 
                                Variable=c(11,12,13,14,15,16))

names(CityCoordinateData)[1] <- c("City")

xy <- merge(CityCoordinateData, data)

leaflet(data = xy) %>%
  addTiles() %>%
  addCircleMarkers(~Lon, ~Lat, radius = ~Variable)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.