gpt4 book ai didi

r - 如何在r中按组绘制几个箱形图?

转载 作者:行者123 更新时间:2023-12-04 13:31:16 27 4
gpt4 key购买 nike

ID <- 1:10 
group <- c(1,1,1,2,2,2,3,3,3,3)
var1 <- c(6:15)
var2 <- c(7:16)
var3 <- c(6:11, NA, NA, NA, NA)
var4 <- c(4:9, NA, NA, NA, NA)
data <- data.frame(ID, group, var1, var2, var3, var4)

library(dplyr)
data %>% group_by(group) %>% boxplot(var1, var2)

最后一行不符合我的期望。想法是在一幅图中获得4个箱形图。每个变量两个。也许我需要使用ggplot2?

最佳答案

如果要在同一图中获得两个变量,则需要重新组织数据。这是一个ggplot2解决方案:

# load library
library(ggplot2)
library(tidyr)
library(ggthemes)


# reorganize data
df <- gather(data, "ID","group")

#rename columns
colnames(df) <- c("ID","group","var","value")

# plot
ggplot(data=df) +
geom_boxplot( aes(x=factor(group), y=value, fill=factor(var)), position=position_dodge(1)) +
scale_x_discrete(breaks=c(1, 2, 3), labels=c("A", "B", "C")) +
theme_minimal() +
scale_fill_grey()

enter image description here

用相同的宽度制作箱形图是一个完全不同的问题 (solution here),但是一个简单的替代方法是这样的:
# recode column `group` in the `data.frame`.
df <- transform(df, group = ifelse(group==1, 'A', ifelse(group==2, 'B', "C")))

# plot
ggplot(data=df) +
geom_boxplot( aes(x=factor(var), y=value, fill=factor((var))), position=position_dodge(1)) +
geom_jitter(aes(x=factor(var), y=value, color=factor((var)))) +
facet_grid(.~group, scales = "free_x") +
theme_minimal()+
scale_fill_grey() +
theme(axis.text.x=element_blank(),
axis.title.x=element_blank(),
axis.ticks=element_blank())

enter image description here

关于r - 如何在r中按组绘制几个箱形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37116204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com