#r #ggplot2 #yaxis
Вопрос:
Я строю несколько (~300) гистограмм и хотел бы зафиксировать диапазон по оси y в пределах / -10 процентных пунктов данных в моем наборе данных. Например: если диапазон по оси y в моем наборе данных равен (10,20), я хотел бы отобразить график rage как (0,30). Есть идеи, как это легко сделать на всех участках? Спасибо
Комментарии:
1. вы имеете в виду 0, 30?
2. Видеть
?expansion
.3. Я не уверен, как
[10,20]
соотносится[0,30]
с 10% чего-либо. Если моя заметкаexpansion
не работает, пожалуйста, предоставьте воспроизводимый пример с образцами данных и минимальным кодом построения. Спасибо!4. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Основываясь на вашем вопросе, вы хотите расширить ось y на /- 10 процентов; однако внутри текста вашего вопроса кажется, что вам нужно расширить на /- 10 единиц (какими бы ни были ваши единицы измерения оси y). Вы можете сделать это довольно легко expansion()
с помощью , к которому можно применить scale_y_continuous()
expand =
аргумент. Вот примерный сюжет.
library(ggplot2)
df <- data.frame(x=LETTERS[1:4], y=c(10, 20, 30, 25))
p <- ggplot(df, aes(x,y)) geom_col()
Ограничения на вводимые данные y
[10, 30]
указаны в вашем вопросе. Если вы хотите автоматически расширить их на 10 единиц в любом направлении, вам необходимо применить expansion(add = (...))
expand=
аргумент in scale_y_continuous()
. В документации для этой функции, вы увидите, что если вы задаете вектор длины 1 в add=
, он будет применяться как верхний и нижний пределы, а можно указать способ, чтобы расширить нижний и верхний пределы по отдельности если вы задаете вектор с длиной 2. Так, например, увеличится на 10 единиц наружу, так как, вы просто используете add=10
:
p scale_y_continuous(expand = expansion(add = 10))
Если вы хотите сохранить нижний предел прежним и добавить только к оси y ( 15
в данном случае by), вы указываете вектор с 2 числами:
p scale_y_continuous(expand = expansion(add = c(0,15)))
Если вы хотите расширить на процент, вы можете указать mult=
вместо add=
. При этом берется число или числа, присвоенные mult=
вам, и умножается на наибольшее или наименьшее значение на вашем графике. Итак, чтобы расширить на 10% в любом направлении, вы умножаете на 0,1:
p scale_y_continuous(expand = expansion(mult = 0.1))
Комментарии:
1. Очень полезно, именно то, что я искал. В итоге я использовал scale_y_continuous(развернуть = расширить масштаб(добавить = c(0,15)))