如何在ggplot2中一起使用coord_carteisan和coord_flip

Ale*_*lex 14 r ggplot2

我有一些奇怪的行为来自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))
Run Code Online (Sandbox Code Playgroud)

现在,我想构建一个图,其中最终产品将具有平均值的点,以及从下部到uppper的线.但我希望这些线条是水平的.我还想在图表上"放大",以便只显示从-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() 
Run Code Online (Sandbox Code Playgroud)

它不应用"缩放"并切换两个参数:

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)) 
Run Code Online (Sandbox Code Playgroud)

应用缩放而不是翻转.这里发生了什么?

Rol*_*and 18

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))
Run Code Online (Sandbox Code Playgroud)


Ist*_*sta 6

同一个绘图有多个坐标系是没有意义的。你要coord_flip(ylim = c(-1, 1))