установите диапазон по оси y равным /-10 процентным пунктам данных в R

#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)))