Как построить 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