我正在尝试根据几项研究的效果大小绘制森林图,按其类型(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),所以我需要包含此代码。
有解决方法吗?