Изменить центр оси Y в ggplot - PullRequest
       47

Изменить центр оси Y в ggplot

0 голосов
/ 24 сентября 2018

Есть ли в любом случае, чтобы переместить "центр" оси Y на 1 в ggplot вместо 0?У меня есть данные отношения, поэтому я пытаюсь визуализировать их таким образом, чтобы значения были выше или ниже 1, а не выше или ниже 0. До сих пор я только вычитал 1 из данных и сосредоточил его вокруг 0 ​​- но я 'у меня не получилось перемаркировать ось у, чтобы она отражала числа, которые я хочу.

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 голосов
/ 24 сентября 2018

Используя смещенные вручную значения коэффициента, вы можете исправить их метки, указав аргумент 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()

Я не вижу ни одноговозможность переопределить базовую линию 0 в geom_bar() или geom_col(), и добиться того же с помощью geom_rect() было бы неудобно, так что это кажется самым простым вариантом.

...