我想为我的数据框df
创建一个很好的置信区间图:
> df
Estimate Lower Upper
A1 0.005414976 -0.01227699 0.02310694
A2 0.004046546 -0.01368911 0.02178220
A3 0.002761602 -0.01491484 0.02043804
A4 -0.002860038 -0.02049349 0.01477342
A5 -0.004197288 -0.02178773 0.01339316
A6 0.011004835 -0.12687561 0.14888529
B1 -0.001077768 -0.01130327 0.00914773
C1 0.137894575 -0.09659997 0.37238912
D1 0.128514414 -0.10866480 0.36569363
D2 0.168863152 -0.06347553 0.40120183
D3 0.139645665 -0.09431216 0.37360349
D4 0.028744139 -0.19562867 0.25311695
从数据集中可以看出,前6行代表一个因子的水平,然后有两个因子只有一个水平,最后一个是4个水平的因子。我希望以这样的方式显示它,以便明确水平属于一个因素。
我目前的情节如下:
ggplot(df, aes(x = rownames(df), y = Estimate, ymin = Lower, ymax = Upper)) +
geom_pointrange() +
geom_hline(yintercept = 0, linetype = 2) +
coord_flip()
我知道如何对因子进行分组还有其他选择,例如:请参阅this,但我想创建一些内容。
非常感谢任何帮助!
答案 0 :(得分:5)
一个解决方案(使用版本2.2.0 ggplot2
)是使用分面但将位置调整到与轴相同的一侧,然后将分面名称放在轴外,并改变文本方向和垂直位置。
首先,添加新变量以显示因子水平。
df$Level <- paste("Factor ",substr(rownames(df),1,1))
ggplot(df, aes(x = rownames(df), y = Estimate, ymin = Lower, ymax = Upper)) +
geom_pointrange() +
geom_hline(yintercept = 0, linetype = 2) +
coord_flip() +
facet_grid(Level~.,scales = "free",space="free",switch = "both") +
theme(strip.placement = "outside",
strip.text.y = element_text(angle = 180,vjust=1, face = "bold"),
strip.background = element_blank(),
panel.spacing = unit(0,"cm"))