前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2绘制方差分析条图叠加散点图

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

作者头像
R语言数据分析指南
发布2023-11-13 10:42:13
3280
发布2023-11-13 10:42:13
举报

绘制拟合曲线散点图

代码语言:javascript
复制
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")

数据清洗

代码语言:javascript
复制
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)
代码语言:javascript
复制
aov_data <- data.frame()

定义函数

代码语言:javascript
复制
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
}

方差分析

代码语言:javascript
复制
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")))

绘制方差分析图

代码语言:javascript
复制
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())

拼图

代码语言:javascript
复制
p1+p2+plot_layout(widths = c(1.5,1))
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 绘制拟合曲线散点图
  • 数据清洗
  • 定义函数
  • 方差分析
  • 绘制方差分析图
  • 拼图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档