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

时间:2017-08-31 17:05:46

标签: r ggplot2

表示我的图表

 ggplot(data=data, x=x, y=y, fill=factor(c)+ geom_path()+geom_errorbar()+   geom_point() 

我想使用

绘制y.axis反向图
scale_y_reverse()

定义其限制,中断,标签和扩展。

通常我会使用:

scale_y_continuous(limits=c(x,y), breaks=c(x,y,z), labels=c(x,y,z), expand(x,y))
好吧,显然

scale_y_reverse()

和     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))

也不起作用。

我确信必须有一种方法,而且像往常一样,我想它很简单......一旦你知道。

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

亲切的问候

2 个答案:

答案 0 :(得分:2)

图表的每个美学属性(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")
    )

答案 1 :(得分:0)

如果您想保留 scale_y_continuous() 以便更轻松地输入参数,可以通过设置 scale_y_reverse() 参数来使用它代替 trans

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

ggplot(d, aes(x = a, y = b)) +
  geom_point() +
  scale_y_continuous(
    trans = scales::reverse_trans(), # <- this one is your solution :)
    limits = c(15, 0), 
    breaks = seq(15, 0, by = -3),
    labels = c("hi", "there", "nice", "to", "meet", "you")
    )