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

6
为了我的图表。
 ggplot(data=data, x=x, y=y, fill=factor(c)+ geom_path()+geom_errorbar()+   geom_point() 

我想要将y轴反向绘制,使用:
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_continuous()被认为与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个回答

7

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

谢谢@DMC的快速而特别友好的回复! - Rrrrrrrrrrr
有没有办法像“log10”一样提供另一个比例变换在其上方?如果我添加“trans=x”参数,它会与继承的scale_y_reverse的trans冲突。 - Tapper
这个问题已经在另一个问题中得到了回答(您需要编写自己的函数):https://dev59.com/e2gu5IYBdhLWcg3w0aOg#11054781 - Tapper

1
如果您想保留 scale_y_continuous() 以便更轻松地输入参数,可以通过设置 trans 参数来使用它,而不是使用 scale_y_reverse()
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")
    )

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