Как поменять метки оси Y в ggplot без изменения графика? - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь построить средние значения для видов, хотя все средние значения отрицательны.Я хочу, чтобы более мелкие значения (более отрицательные) были ближе к нижней части оси y, а более крупные значения (менее отрицательные) - выше по оси y.

Я пытался изменить coord_cartesian и ylim, но ни одна из них не работает.

ggplot(meanWUE, aes(x = Species, y = mean, fill = Species)) + 
 coord_cartesian(ylim = c(-0.8, -0.7)) +
 scale_fill_manual( values c("EUCCHR" = "darkolivegreen2","ESCCAL" = "darkgoldenrod2", "ARTCAL" = "darkcyan", "DEIFAS" = "darkred", "ENCCAL" = "darkorchid2", "SALMEL" = "deepskyblue1", "ERIFAS" = "blue3", "BRANIG" = "azure3", "PHAPAR"= "palevioletred" )) + 
 scale_y_reverse() + 
 geom_bar(position = position_dodge(), stat="identity") +
 geom_errorbar(aes(ymin=mean-se, ymax=mean+se),width=.3) +
 labs(x="Species", y="WUE")+ 
 theme_bw() + 
 theme(panel.grid.major = element_blank(), legend.position = "none")

Я хочу, чтобы ESCCAL и EUCCHR были, по сути, самыми короткими столбиками, но в настоящее время они показаны как самые высокие.

Виды против эффективности использования воды

enter image description here

Если я не делаю scale_y_reverse, я получаю график, который выглядит следующим образом второе изображение

1 Ответ

0 голосов
/ 10 мая 2019

Один из подходов состоит в том, чтобы сместить все числа, чтобы показать их значение над базовой линией, а затем скорректировать маркировку таким же образом:

df <- data.frame(Species = LETTERS[1:10],
                 mean = -80:-71/100)

ggplot(df, aes(x = Species, y = mean, fill = Species)) + 
  geom_bar(position = position_dodge(), stat="identity")

enter image description here

Здесь мы смещаем значения, чтобы показать их относительно новой базовой линии. Тогда мы можем показать большие числа в виде более крупных баров, как мы обычно ожидаем для положительных чисел. В то же время мы меняем метки на оси Y, чтобы они соответствовали исходным значениям. Таким образом, -0,8 становится +0,1 против базового уровня -0,9. Но мы также корректируем метки, так что скорректированный 0 имеет метку -0,9, а скорректированный +0,1 имеет метку -0,8, ее первоначальное значение.

baseline <- -0.9
ggplot(df, aes(x = Species, y = mean - baseline, fill = Species)) + 
  geom_bar(position = position_dodge(), stat="identity") +
  scale_y_continuous(breaks = 0:100*0.02,
                     labels = 0:100*0.02 + baseline, minor_breaks = NULL)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...