我有几个城市的 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 的圆标记。
您的数据每个位置都有多个值。如果这是正确的,每个位置都会有几个圆圈。这是我尝试过的代码。
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)