大数跨境
0
0

ggplot2绘制方差分析条图叠加散点图

ggplot2绘制方差分析条图叠加散点图 R语言数据分析指南
2023-11-08
2

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

本周在会员交流群内看到如下一张图,其主要是条形图+方差分析与散点图+拟合曲线的结合;其主要点在得到正确的绘图数据。小编随机构建了两份数据来做一下绘图展示,整个过程仅参考。希望对各位观众老爷能有所帮助。「数据代码已经整合上传到2023VIP交流群」,加群的观众老爷可自行下载,有需要的朋友可关注文末介绍加入VIP交流群。

绘制拟合曲线散点图

p2 <- gapminder %>% select(2,1,year,lifeExp,gdpPercap) %>% 
  filter(continent=="Asia") %>% 
  filter(country %in% c("India","Cambodia","Afghanistan","Bangladesh","Indonesia")) %>% 
  ggplot(aes(lifeExp,gdpPercap))+
  geom_point(aes(color=country))+
  stat_smooth(linetype=2,color="red",size=0.5)+
  stat_poly_eq(use_label(c("eq","adj.R2","p"), sep = "*\"; \"*"),
               size=3,label.x.npc = "left", label.y.npc = "top",rr.digits =3)+
  scale_color_manual(values=wes_palette("Zissou1"))+
  scale_y_continuous(position = "right")+
  labs(x=NULL,y=NULL)+
  theme_test()+
  theme(legend.position = "non")

数据清洗

df <- read_tsv("data.xls") %>%
  arrange(conc) %>%
  unite("Type", Treatment:Type, sep="_", remove = TRUE, na.rm = FALSE) %>%
  mutate(Plant = str_remove(Plant, "[0-9]+")) %>%
  filter(conc %in% c(95,175,250,350)) %>% 
  split(.$conc)
aov_data <- data.frame()

定义函数

perform_anova <- function(data) {
  data <- rename(data, Plant=Plant, Type=Type, conc=conc, uptake=uptake)
  
  anova <- aov(uptake ~ Type, data = data)
  Tukey <- TukeyHSD(anova)
  cld <- multcompLetters4(anova, Tukey)
  
  dt <- data %>%
    group_by(Plant, Type, conc) %>%
    summarise(value_mean = mean(uptake), sd = sd(uptake), .groups = 'drop') %>%
    arrange(desc(value_mean))
  
  cld <- as.data.frame.list(cld$`Type`)
  dt$Tukey <- cld$Letters
  dt
}

方差分析

aov_data <- bind_rows(lapply(df, perform_anova))

aov_data <- aov_data %>%
  arrange(Plant) %>%
  mutate(conc = fct_relevel(factor(conc), c("95""175""250""350")))

绘制方差分析图

p1 <- aov_data %>% 
  ggplot(aes(conc,value_mean,fill=Type))+
  geom_bar(stat = "identity", position = "dodge",width=0.5) +
  geom_errorbar(aes(ymax = value_mean + sd, ymin = value_mean - sd),
                position = position_dodge(0.5),width = 0.2,color = "Gray25")+
  scale_fill_manual(values=wes_palette("Zissou1"))+
  scale_y_continuous(expand = expansion(0))+
  geom_text(aes(label=Tukey, y = value_mean + sd + 1.5), color = NA,
            show.legend = FALSE,position = position_dodge(0.5))+
  geom_text(aes(label=Tukey, y = value_mean + sd +0.8), size = 3, color = "black",
            show.legend = FALSE,position = position_dodge(0.5))+
  labs(x=NULL,y=NULL)+
  theme(axis.ticks.x=element_blank(),
        axis.text.y=element_text(color="black",size = 10,margin = margin(r =2)),
        axis.text.x=element_text(color="black",size = 10),
        panel.background = element_rect(fill = NA,color = NA),
        panel.grid.minor= element_line(size=0.2,color="#e5e5e5"),
        panel.grid.major = element_line(size=0.2,color="#e5e5e5"),
        panel.border = element_rect(fill=NA,color="black",size=0.3,linetype="solid"),
        legend.title = element_blank(),
        legend.text = element_text(color="black",size=8),
        legend.spacing.x=unit(0.1,'cm'),
        legend.key.width=unit(0.4,'cm'),
        legend.key.height=unit(0.4,'cm'),
        legend.position = c(0.35,1),legend.justification=c(1,1),
        legend.background=element_blank())

拼图

p1+p2+plot_layout(widths = c(1.5,1))

本节内容介绍到此结束,过程仅供参考;有需要学习时间可视化的朋友,欢迎到小编的「淘宝店铺」 「R语言数据分析指南」购买「2023年度会员文档」同步更新中「售价149元」,内容主要包括各种「高分论文的图表分析复现以及一些个性化图表的绘制」均包含数据+代码;按照往年数据小编年产出约在150+以上

购买后微信发小编订单截图即邀请进新的会员交流群,小编的文档为按年售卖,只包含当年度的「除系列课程外」的文档,有需要往年文档的朋友也可下单购买,需要了解更多信息的朋友欢迎淘宝店铺交流咨询。

淘宝扫一扫

淘宝店铺(有需要欢迎关注)

关注下方公众号下回更新不迷路

【声明】内容源于网络
0
0
R语言数据分析指南
R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
内容 1180
粉丝 0
R语言数据分析指南 R语言重症爱好者,喜欢绘制各种精美的图表,喜欢的小伙伴可以关注我,跟我一起学习
总阅读222
粉丝0
内容1.2k