在ggplot中更改y轴中心

时间:2018-09-24 03:02:40

标签: r ggplot2 continuous

是否有将ggplot中y轴的“中心”移动到1而不是0?我有比率数据,所以我试图以一种方式将值可视化,使其值大于或小于1,而不是大于或小于0。到目前为止,我只是从数据中减去1,并将其定为0左右,但是我重新标记y轴以使其反映我想要的数字一直失败。

chi_ratios_plot  <-  ggplot(data=chi_ratios, aes(x = metric, y =ratio2, fill=coral_cover))+
  geom_bar(stat="identity", position="dodge")+
  theme_classic()+
  coord_flip()

有我的代码。这是我到目前为止的内容: enter image description here 0应该真的是1,-1应该真的是0,依此类推。

1 个答案:

答案 0 :(得分:1)

使用手动移动的比率值,您可以通过为labels提供一个scale_y_continuous参数并将其上移到1来修正其标签。

chi_ratios = expand.grid(
    metric = c("A", "B", "C"),
    coral_cover = c("Low", "Med", "High")
) %>%
    # ratio: actual ratios
    # ratio2: shifted so they're centered at 0
    mutate(ratio = rnorm(n(), mean = 1, sd = 2),
           ratio2 = ratio - 1)


ggplot(data=chi_ratios, aes(x = metric, y = ratio2, fill = coral_cover)) +
    geom_col(position="dodge") +
    scale_y_continuous(labels = function(breaks) { breaks + 1}) +
    theme_classic() +
    coord_flip()

我在geom_bar()geom_col()中都看不到任何覆盖0基线的选项,并且用geom_rect()实现相同的操作很容易,所以这似乎是最简单的选项。