首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >ggplot2优雅绘制多组旭日图

ggplot2优雅绘制多组旭日图

作者头像
R语言数据分析指南
发布2024-03-20 21:20:21
发布2024-03-20 21:20:21
7650
举报

欢迎关注R语言数据分析指南

案例图

仿图

绘图思路

❝此图用R绘制难点有两处 (1)在于绘制连接处并进行渐变色填充 (2)绘制独立的甜甜圈图进行拼图 目前ggplot2 3.5已经能指定为图形进行渐变色填充,那么连接处我们可以当做是旭日图的第三圈并独立对其进行渐变颜色填充,至于拼图个人建议还是AI编辑器实现更为简便。 ❞

关于永久群内容的说明

❝给予长期支持我们的读者们一个特别待遇:购买小编VIP会员文档的读者,「将自动获得2024年及以后更新的绘图文档代码,无需额外付费」。目前会员文档(2023+2024)「已经更新上传了140+案例文档」,每个案例都附有相应的数据和代码,并配有对应的注释文档,方便大家学习和参考。 ❞

有需要学习数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」下单购买,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码。购买会员文档后微信发小编订单号即邀请进新的会员交流群。

「2024更新的绘图内容同时包含数据+代码+markdown注释文档+文档清单」

代码语言:javascript
复制
library(tidyverse)
library(geomtextpath)
library(ggnewscale)
代码语言:javascript
复制
load("da.Rdata") # 加载数据

绘制旭日图

代码语言:javascript
复制
p1 <- ggplot()+
  geom_rect(data=data.frame(xmin=0, xmax=1, ymin=0, ymax=.75), 
            mapping=aes(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax), fill="white")+
  geom_rect(data=houses, mapping=aes(xmin=start_lim, xmax=end_lim, ymin=1, ymax=1.75, 
                        fill=fill_col), color="white")+
  scale_fill_npg(alpha=0.8)+
  new_scale_fill()+
  geom_rect(data=parts, mapping=aes(xmin=start_lim, xmax=end_lim, ymin=1.751, ymax=2.501, 
                        fill=fill_col), color="white")+
  scale_fill_npg()+
  geom_textpath(data=houses, mapping=aes(x=mid_pt, y=1.35,label=toupper(speaker_type)), color="black",
                size = 2, text_only = TRUE)+
  geom_textpath(data=parts %>% filter(speaker_type!="Neutral" & perc>=0.02),
                mapping=aes(x=mid_pt, y=2.35,label=paste0(str_replace(speaker," ","\n"),"\n",round(perc*100,1),"%")),
                color="white",size =2, text_only = TRUE) +
  geom_textpath(data=parts %>% filter(speaker_type=="Neutral" & perc>0.025),
                mapping=aes(x=mid_pt, y=2.35, label=paste0(str_replace(speaker," ","\n"),"\n",round(perc*100,1),"%")),
                color="black",size =2, text_only = TRUE) +
  coord_polar()+
  theme(legend.position = "none",
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        axis.text = element_blank(),
        panel.grid = element_blank(),
        panel.background =element_blank(),
        plot.background=element_blank())

绘制甜甜圈图

代码语言:javascript
复制
df_agrupado <- read_csv("vinos.csv") %>% 
  mutate(grupo:=c('Tinto', 'Blanco', 'Espumoso','Rosado','Otros', 'Espumoso',
                  rep('Otros',4))) %>%
  group_by(grupo) %>% 
  summarise(hl:=sum(hl)) %>%
  mutate(pct_hl:=round(hl/sum(hl)*100,1)) %>%
  arrange(desc(pct_hl))

colors <- c("#3B9AB2","#7294D4","#C6CDF7","#E6A0C4","#A2A475")

p2 <- ggplot(df_agrupado,aes(x=1, y=pct_hl, fill=reorder(grupo, pct_hl))) +
  geom_col(position=position_stack()) +
  scale_fill_manual(values=colors) +
  scale_color_manual(values=colors)+
  coord_polar(theta="y") +
  xlim(c(-1,2))+
  theme(axis.text=element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        plot.margin = unit(c(0,-2,0,0),'cm'),
        panel.background = element_blank(),
        plot.background = element_blank(),
        panel.grid = element_blank(),
        panel.border = element_blank(),
        legend.position =c(1.1,0.5),
        legend.key.height = unit(0.3,"cm"),
        legend.key.width = unit(0.3,"cm"),
        legend.background = element_blank(),
        legend.text = element_text(color="black",size=6),
        legend.title = element_blank())
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 案例图
  • 仿图
    • 绘图思路
  • 关于永久群内容的说明
  • 绘制旭日图
  • 绘制甜甜圈图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档