我有一些来自ggplot的怪异行为。这是一个MWE:
the_data <- data.frame(
myx <- 1:10,
lower <- rnorm(10,-5,1),
mean <- rnorm(10,0,.5),
upper <- rnorm(10,5,1))
the_data2 <- data.frame(
myx <- 1:10,
lower <- rnorm(10,-5,1),
mean <- rnorm(10,0,.5),
upper <- rnorm(10,5,1))
现在,我想构建一个图,其中最终产品将具有平均值的点,以及从较低的位置到uppper的线。但我希望这些线条是水平的。我也想&#34;放大&#34;在图表上,只显示从-1到1的值。我需要使用coord_cartesian
,因为如果我使用ylim
,它会删除图表外部的数据点,从而弄乱了这些行。但是当我跑步时:
ggplot() +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
coord_cartesian(ylim = c(-1, 1)) +
coord_flip()
它没有应用&#34;缩放&#34;并切换两个参数:
ggplot() +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
coord_flip() +
coord_cartesian(ylim = c(-1, 1))
应用缩放但不应用翻转。这里发生了什么?
答案 0 :(得分:16)
coord_flip
是coord_cartesian
的包装器。你对coord_cartesian
进行两次调用,第二次覆盖第一次。你可以这样做:
ggplot() +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data) +
geom_pointrange(aes(x=myx, y=mean, ymin=lower, ymax=upper), data=the_data2) +
coord_flip(ylim = c(-1, 1))
答案 1 :(得分:3)
为同一个绘图设置多个坐标系是没有意义的。你想要coord_flip(ylim = c(-1, 1))