Как построить geom_col(), чтобы получить ось Y с центром вокруг 1, а не 0

Я строю некоторые данные, используя ggplot2 "s geom_bar, Данные представляют отношение, которое должно сосредоточиться вокруг 1 и не 0, Это позволило бы мне выделить, какие категории идут ниже или выше этого центрального числа отношений. Я пытался играть с set_y_continuous() а также ylim(), ни один из которых не позволяет мне отправить значение центральной оси.

В основном: как я могу сделать Y вокруг 1 и не 0,

извините, если я задаю вопрос, на который был дан ответ... может быть, я просто не знаю правильных ключевых слов?

ggplot(data = plotdata) +
  geom_col(aes(x = stressclass, y= meanexpress, color = stressclass, fill = stressclass)) +
  labs(x = "Stress Response Category", y = "Average Response Normalized to Control") +
  facet_grid(exposure_cond ~ .)

На данный момент мои графики выглядят так:

1 ответ

Решение

Вы можете предварительно обработать ваши значения y так, чтобы график фактически начинался с 0, затем измените метки шкалы, чтобы они отражали исходные значения (демонстрация со встроенным набором данных):

library(dplyr)
library(ggplot2)

cut.off = 500                                            # (= 1 in your use case)

diamonds %>%
  filter(clarity %in% c("SI1", "VS2")) %>%
  count(cut, clarity) %>%
  mutate(n = n - cut.off) %>%                            # subtract cut.off from y values
  ggplot(aes(x = cut, y = n, fill = cut)) +
  geom_col() +
  geom_text(aes(label = n + cut.off,                     # label original values (optional)
                vjust = ifelse(n > 0, 0, 1))) +
  geom_hline(yintercept = 0) +
  scale_y_continuous(labels = function(x) x + cut.off) + # add cut.off to label values
  facet_grid(clarity ~ .)

ht tps:https://stackru.com/images/97e12f05b227ec4368b93f8975b7098364b7b4b4.png

Другие вопросы по тегам