我有几个城市的400,000行数据(data
)。我希望通过传单可视化他们的位置和不同的属性。例如,我想根据给定城市的样本编号设置圆形大小。我得到了正确的位置,但我无法改变半径。我在下面尝试了这个,其中CityCoordinateData
是3列的df:所有城市的单行,即位置,他们的Lon和Lat以及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。
答案 0 :(得分:0)
您的数据每个位置都有多个值。如果正确,每个位置将有几个圆圈。这是我试过的代码。
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)