gpt4 book ai didi

r - 多面ggplot中轴文本的条件格式

转载 作者:行者123 更新时间:2023-12-01 01:51:42 34 4
gpt4 key购买 nike

我试图从几项研究中制作一个效应大小的森林图,按它们的类型(X 或 Y)分面。数据集包括代表 X 类研究和 Y 类研究的汇总统计的行,由 study=="Summary" 指定。 .

study <- as.factor(c("A","B","C","A","B","Summary","Summary"))
mean <- c(1.29,0.76,2.43,1.68,1.22,1.7,0.76)
lowerCI <- c(0.84,0.50,1.58,1.1,0.8,1.11,0.50)
upperCI <- c(1.95,1.16,3.67,2.54,1.85,2.56,1.16)
type <- as.factor(c("X","X","X","Y","Y","X","Y"))

df <- data.frame(study, mean, lowerCI, upperCI, type)
df$study <- as.factor(df$study)

我想加粗汇总效果大小的轴刻度标签。出于某种原因,使用 ifelse当我进行子集化时,语句不起作用。在这个示例代码中,只有类型 X 的摘要标签是粗体的,而两者都应该是粗体的。在我真实的、更复杂的代码中,两个摘要标签都没有加粗。
library(ggplot2)
plot <- ggplot(data=df, aes(y=study, x=mean, xmin=lowerCI, xmax=upperCI, shape = type)) +
geom_point(color = 'black', size=2)+
geom_errorbarh(height=.1)+
geom_point(data=subset(df,study=='Summary'), color='black', size=5)+
facet_grid(type~., scales= 'free', space='free')+
theme(axis.text.y= element_text(face=ifelse(levels(df$study)=="Summary","bold","plain")))
print(plot)

看来罪魁祸首是 scales='free'代码,因为如果我只是删除它或将其更改为 scales='free_x' ,摘要适当加粗两次。但是,因为我想删除属于一个子集中而不是另一个子集中的研究的冗余行(在本例中,研究 C),所以我需要包含此代码。

有解决方法吗?

最佳答案

您可以使用 scale_y_discrete 在所有方面格式化给定刻度标签的每个实例。通过分配所需的 labels值(包括格式化代码)到相应的 breaks值(value):

ggplot(data=df, aes(y=study, x=mean, xmin=lowerCI, xmax=upperCI, shape = type)) +
geom_point(color = 'black', size=2)+
geom_errorbarh(height=.1)+
geom_point(data=subset(df,study=='Summary'), color='black', size=5)+
facet_grid(type~., scales= 'free', space='free') +
scale_y_discrete(breaks=levels(df$study),
labels=c(levels(df$study)[1:3], expression(bold("Summary"))))

enter image description here

关于r - 多面ggplot中轴文本的条件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013753/

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