作者locka (locka)
看板R_Language
标题Re: [问题] 地图上的资料点如何以圆饼图呈现
时间Fri Mar 20 16:11:30 2020
野人献曝一下...
不确定原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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.118.135.220 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1584691892.A.B9A.html
1F:推 andrew43: 赞赞! 03/20 16:19