ggplot2 轴:如何将 scale_x_reverse 与 scale_x_continous 结合使用

Rrr*_*rrr 5 r ggplot2

对于我的图表

 ggplot(data=data, x=x, y=y, fill=factor(c)+ geom_path()+geom_errorbar()+   geom_point() 
Run Code Online (Sandbox Code Playgroud)

我想绘制 y.axis 反向,使用

scale_y_reverse()
Run Code Online (Sandbox Code Playgroud)

同时定义其限制、中断、标签和扩展。

通常我使用:

scale_y_continuous(limits=c(x,y), breaks=c(x,y,z), labels=c(x,y,z), expand(x,y))
Run Code Online (Sandbox Code Playgroud)

好吧,显然

scale_y_reverse()
Run Code Online (Sandbox Code Playgroud)

和 scale_y_continous() 以某种方式被认为是相同的代码!?当我收到错误时,说:

“'y' 的比例已经存在。为 'y' 添加另一个比例,这将替换现有的比例。”

我发现一个帖子说可以组合这两个命令,因此我尝试了:

scale_y_reverse(limits=c(x,y), breaks=c(x,y,z), labels=c(x,y,z), expand(x,y))
Run Code Online (Sandbox Code Playgroud)

这也不起作用。

我相信一定有办法,和往常一样,我想这很简单..一旦你知道了。

我希望有人知道如何解决这个问题。

亲切的问候

dav*_*ers 6

图形的每个美学属性(y 轴、x 轴、颜色等)只接受一个尺度。如果您指定 2 个比例,例如scale_y_continuous()后跟scale_y_reverse(),第一个比例将被覆盖。

您可以在 中指定限制、中断和标签,scale_y_reverse()而只需省略scale_y_continuous()

例子:

d <- data.frame(a = 1:10, b = 10:1)

ggplot(d, aes(x = a, y = b)) +
  geom_point() +
  scale_y_reverse(
    limits = c(15, 0), 
    breaks = seq(15, 0, by = -3),
    labels = c("hi", "there", "nice", "to", "meet", "you")
    )
Run Code Online (Sandbox Code Playgroud)