野人獻曝一下...
不確定原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