geom_grob::geom_grob()
元素
利用geom_gro
b包中的geom_grob()
元素,该方法自定义行更强。
#对每个省做饼图
ppp <- dat%>%
mutate(Mn_status=cut(Mn,breaks=c(-50,30,80,2000),
labels=c("low","medium","high")))%>%
group_nest(province) %>%
mutate(prop=map(data,~ggplot(data=.x,aes(x="",fill=Mn_status))+
geom_bar(width=1)+
coord_polar(theta="y")+
scale_fill_manual(guide="none", #不能要legend
values=ggsci::pal_aaas()(3))+
labs(x="",y="",fill=(province))+
theme(panel.background = element_blank(),
plot.background = element_blank(),
axis.text = element_blank(),
axis.title=element_blank(),
axis.ticks=element_blank(),
panel.grid=element_blank())
)
)
#合并到数据集
china_provin%<>%
left_join(ppp,by="province")%>%
select(1,4,6)%>%
mutate(prop2=map(prop,~ggplotGrob(.x))) #转化为图标
#做主图
df4%>%ggplot()+
geom_sf()+
ggpmisc::geom_grob(data=china_provin,
vp.width =0.07, vp.height=0.07,
aes(geometry = centd,label=prop2),
stat="sf_coordinates")
scatterpie::geom_scatterpie
元素
利用scatterpie
包中的geom_grob()
元素
ppp<-dat%>%
mutate(Mn_status=cut(Mn,breaks=c(-50,30,80,2000),
labels=c("low","medium","high")))%>%
group_by(province,Mn_status)%>%
summarize(count=n())%>%
pivot_wider(names_from = Mn_status,values_from=count,values_fill=0)%>%
mutate(size=low+medium+high)
df4%>%ggplot()+
geom_sf()+
scatterpie::geom_scatterpie(data=china_provin,
aes(x=sss1,y=sss2,r=count/200),
cols=c("low","medium","high"),
legend_name = 'Mn',
color=NA,alpha=0.7
)
> head(ppp)
# A tibble: 6 x 5
# Groups: province [6]
province low medium high size
<chr> <int> <int> <int> <int>
1 安徽省 84 173 155 412
2 福建省 419 142 61 622
3 广东省 33 5 3 41
4 广西壮族自治区 59 3 0 62
5 贵州省 173 89 123 385
6 河南省 69 116 42 227