

❝此图用R绘制难点有两处 (1)在于绘制连接处并进行渐变色填充 (2)绘制独立的甜甜圈图进行拼图 目前ggplot2 3.5已经能指定为图形进行渐变色填充,那么连接处我们可以当做是旭日图的第三圈并独立对其进行渐变颜色填充,至于拼图个人建议还是AI编辑器实现更为简便。 ❞
❝给予长期支持我们的读者们一个特别待遇:购买小编VIP会员文档的读者,「将自动获得2024年及以后更新的绘图文档代码,无需额外付费」。目前会员文档(2023+2024)「已经更新上传了140+案例文档」,每个案例都附有相应的数据和代码,并配有对应的注释文档,方便大家学习和参考。 ❞
有需要学习数据可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」下单购买,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码。购买会员文档后微信发小编订单号即邀请进新的会员交流群。
「2024更新的绘图内容同时包含数据+代码+markdown注释文档+文档清单」
library(tidyverse)
library(geomtextpath)
library(ggnewscale)
load("da.Rdata") # 加载数据
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())

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())
