label <- paste0("X", 1:6)
mean <- c(1.29,0.76,2.43,1.68,1.22,1.7)
lower <- c(0.84,0.50,1.58,1.1,0.8,1.11)
upper <- c(1.95,1.16,4.5,2.54,1.85,2.56)
df <- data.frame(label, mean, lower, upper)
# reverses the factor level ordering for labels after coord_flip()
# df$label <- factor(df$label, levels=rev(df$label))
library(ggplot2)
fp <- ggplot(data=df, aes(x=label, y=mean, ymin=lower, ymax=upper)) +
geom_errorbar() + geom_point() +
geom_hline(yintercept=1, lty=2) + # add a dotted line at x=1 after flip
coord_flip() + # flip coordinates (puts labels on y axis)
xlab("Label") + ylab("Mean (95% CI)") +
theme_bw() + ylim(c(0, 4))
fp
使用上面的代码,X3
由于其上限为 4.5,大于ylim(c(0, 4))
I 设置,因此被截断。有没有办法在遵守我设置的轴限制的同时防止这种情况发生?
也就是说,我想要这样的情节:
要裁剪部分几何图形而不完全删除它,请更改坐标限制而不是轴比例限制。在这种情况下,这意味着您可以使用
ylim
参数coord_flip
代替函数ylim
:顺便说一句,您可以在不使用 的情况下获得相同的图
coord_flip
。我发现不必要时翻转坐标只会使调试绘图代码变得更加困难:我们可以使用
scale_y_continuous
和oob = scales::squish
。对于scales::squish
超出限制的值,将设置为最近的限制而不是删除它们。误差线将达到极限 (4) 并且不会被删除。