复合饼图的地图

7 篇文章 2 订阅
本文展示了如何利用`geom_grob`和`scatterpie`包在R中进行地理数据的饼图和散点图可视化。首先,通过`geom_grob`创建省份的饼图并将其转换为图形元素,然后将这些元素整合到地图背景上。其次,使用`scatterpie`在地图上绘制带有比例的散点图,以展示不同省份的分类数据分布。这种方法提供了对地理数据更丰富的视觉呈现。
摘要由CSDN通过智能技术生成

geom_grob::geom_grob()元素

利用geom_grob包中的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

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值