野人献曝一下...
不确定原po想要的东西是什么, 因为leaflet套件提供的addCircleMarkers()
是用来画气泡图, 也就是以圆圈大小表示同一个字段在不同地点的值
圆饼图的话, 变成要加总不同地方、不同类别(字段)的个数再计算各自的比例
如果是要做圆饼图, 可以使用leaflet.minichart这个套件
以iris为例, 原始data还需要做一些调整
library(dplyr)
library(leaflet)
library(leaflet.minicharts)
# minimal test dataset
iris2 <- iris %>% group_by(Species) %>% tally %>% spread(Species, n) %>%
mutate(lng=120.946, lat=23.754, total=150) %>%
add_row(setsosa=40, versicolor=80, virginica=180,
lng=115.946, lat=23.754, total=300)
大概整理成这样
https://i.imgur.com/0gX5zEm.jpg
colors <- c("#4fc13c","#cccccc","#33383c")
leaflet() %>% addTiles() %>%
addMinicharts(
lng = iris2$lng,
lat = iris2$lat,
type = "pie",
chartdata = iris2[,c("setosa","versicolor","virginica")],
colorPalette = colors,
width = 60*sqrt(iris2$total)/sqrt(max(iris2$total))
)
结果如图
https://i.imgur.com/at17sma.jpg
用R玩了GIS一段时间, 希望有帮到忙~
※ 引述《rebe212296 (绿豆冰)》之铭言:
: [问题类型]:
: Openstreetmap
: [软件熟悉度]:
: 会基本资料清理,资料分析,
: [问题叙述]:
: 想以Openstreetmap 加入圆饼图
: 圆饼图是显示该地的iris的Species比例
: [程式范例]:
: install.packages("OpenStreetMap")
: install.packages("leaflet")
: install.packages("magrittr")
: install.packages("mapproj")
: library(OpenStreetMap)
: library( leaflet )
: library( magrittr )
: library( mapproj )
: subscr<-data.frame(lat=c(55.381640),lon=c(10.433600)
: m <- leaflet() %>% setView(lng=120.239, lat=22
: .992, zoom
: = 12)
: m%>% addTiles()
: m %>% addProviderTiles("Stamen.Toner")
: # 画圆圈
: #addCircleMarkers(data = subscr,
: lat = ~lat, lng = ~lon,
: color = "blue")
: # Pie Chart from data frame with Appended Sample Sizes
: mytable <- table(iris$Species)
: lbls <- paste(names(mytable), "\n", mytable, sep="")
: pie(mytable, labels = lbls,ꀊ: ꂠ main="Pie Chart of Species\n (with sample sizes)")
: [环境叙述]:
: R 6.3.3
: [关键字]:
: Openstreetmap