在ggplot2中绘制反转的y轴和x轴,并将x轴放在顶部

5

我正在尝试使用ggplot2绘制图表,要求y轴反向并且x轴在顶部。我使用了scale_y_reverse()来反转y轴,但是无法弄清如何将x轴放在顶部而不是底部。

dfn <- read.table(header=T, text='
supp dose length
  OJ  0.5  13.23
  OJ  1.0  22.70
  OJ  2.0  26.06
  VC  0.5   7.98
  VC  1.0  16.77
  VC  2.0  26.14
')

library(ggplot2)
p1 <- ggplot(data=dfn, aes(x=dose, y=length, group=supp, colour=supp)) + geom_line() + geom_point()
p1 <- p1 + scale_y_reverse()
print(p1)

enter image description here


很遗憾,这个功能不太可能被实现。参见相关问题 - tonytonov
1
据我所知,ggvis 支持此功能。 - tonytonov
感谢@tonytonov对我的问题的关注。除了使用“Inkscape”之外,是否有其他解决方法?谢谢。 - MYaseen208
网格/ gridExtra 的组合可能会有所帮助,尽管这是一种复杂的低级方法。还有相关内容: - tonytonov
这个可能也会有帮助:http://stackoverflow.com/questions/22318186/add-ticks-without-labels-on-the-top-of-a-bar-plot-in-ggplot2/22335684#22335684 - user20650
4个回答

7
现在使用ggplot v2.2.0更加简单:
p1 <- ggplot(data=dfn, aes(x=dose, y=length, group=supp, colour=supp)) + geom_line() + geom_point()
p1 <- p1 + scale_y_reverse() + scale_x_continuous(position = 'top')
print(p1)

4

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分,并提供参考链接。仅有链接的答案如果链接页面更改则会变得无效。 - 来自审查 - Ronak Shah
1
链接仅供参考,不是答案的必要部分。所提供的代码是答案的核心部分。 - Clay

1
你需要使用ggvis来完成这个操作:

library(ggvis)
dfn %>% ggvis(~dose, ~length, fill= ~supp, stroke=~supp) %>% layer_lines(fillOpacity=0) %>%
  scale_numeric('y', reverse=T) %>% add_axis('x',orient='top')

enter image description here


0
你应该只使用 scale_y_continuous() 或者 scale_y_reverse(),而不是同时使用两者。所以: scale_y_reverse(limits = c(0, -0), breaks = seq(from = 0, to = -0, by = -0), expand = c(0,0), position = "right") 附注:将0替换为你的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接