r - 如何更改ggboxplot中的x轴标签
问题描述
我有一个包含多个因素的数据框。我使用 ggboxplot 来获得一个箱线图,其中包含不同类别的比较。我对 x 轴标签不满意。我尝试了不同的方法,但未能达到我的预期。用于创建绘图的代码是:
df <- data.frame(country=sample(LETTERS[1:4], 1000, TRUE),
rating=round(rnorm(1000,70,15),1),
sex =rep(c("Female","Male"),500),
school=sample(c("public","private"),1000,TRUE))
df$group <- paste(df$school,df$sex,sep=".")
df <- df[order(df$group),]
my_comparisons <- list(c("public.Female","public.Male") , c("private.Female","private.Male"))
library(ggpubr)
ggboxplot(df, x = "group",y = "rating",
color = "group", palette = "simpsons",
add = "jitter",facet.by="country",legend="none", ylab="Rating") +
theme(strip.text.x=element_text(size=10, color="red", face="bold.italic"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.title.x = element_blank()) +
stat_compare_means(method = "t.test",comparisons = my_comparisons,
label.y = 110,label = "p.signif")
解决方案
这让你接近你正在寻找的东西(我无法弄清楚行分隔符)。您可能还需要调整标签的位置以使它们恰到好处,以及尺寸。
ggboxplot(df, x = "group",y = "rating",
color = "group", palette = "simpsons",
add = "jitter", facet.by="country", legend="none", ylab="Rating") +
scale_x_discrete(labels=rep(c("F","M"),4)) +
theme(strip.text.x=element_text(size=10, color="red", face="bold.italic"),
axis.title.x = element_blank(),
plot.margin=unit(c(2,2,15,2), "mm")) +
stat_compare_means(method = "t.test",comparisons = my_comparisons,
label.y = 110, label = "p.signif") +
coord_cartesian(ylim=c(20,120), xlim=c(1,4), clip="off") +
annotate("text", x=1.5, y=0, label=c("","","Private","Private")) +
annotate("text", x=3.5, y=0, label=c("","","Public","Public")) +
annotate("text", x=0.5, y=10, label=c("","","Sex",""), hjust=1) +
annotate("text", x=0.5, y=0, label=c("","","School",""), hjust=1)
添加的内容包括scale_x_discrete()
更改 x 轴标签,plot.margin
并coord_cartesian
允许在绘图区域之外进行注释,以及annotate
对于每个注释,其中每个分面面板的标签以向量形式给出,而不应获得标签的面板则为空白。
可能有一种更简洁的方法可以做到这一点,但绘图的多面性质意味着注释会在这种情况下您不想要的多面复制。
推荐阅读
- azure - 服务错误触发 Azure 函数未在主题中使用数千条消息执行
- amazon-web-services - 创建 AWS QuickSight 模板时出现“预期 2 个占位符。给定 1”错误
- android - com.iceteck.silicompressorr.provider.GenericFileProvider 未找到并崩溃应用程序
- python - 根据索引交换单元格值
- javascript - VueJS 无法在 MacOS(Safari 和 Chrome)上呈现
- python - 使用 Pandas 将多个 CSV 文件合并到一个数据框
- javascript - 尝试向提及的用户发送 DM 时出现 TypeError
- python - 尝试将图像设置为第二个窗口时出现 pyimage4 错误
- python - 将数据框中字符串中的单词替换为单独数据框中的单词
- python - Python 约束优化问题