Как установить лимиты для осей в графиках ggplot2 R?
Я рисую следующее:
library(ggplot2)
carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)
ggplot(vegLengths, aes(length, fill = veg)) +
geom_density(alpha = 0.2)
Теперь скажите, что я хочу только построить область между x=-5000
и 5000
вместо всего диапазона.
Как я могу это сделать?
Ответы
Ответ 1
В принципе у вас есть две опции
scale_x_continuous(limits = c(-5000, 5000))
или
coord_cartesian(xlim = c(-5000, 5000))
Если первая удаляет все точки данных за пределами заданного диапазона, а вторая только настраивает видимую область. В большинстве случаев вы не увидите разницы, но если вы что-то приложите к данным, это, вероятно, изменит установленные значения.
Вы также можете использовать сокращенную функцию xlim
(или ylim
), которая, как и первая опция, удаляет точки данных за пределами заданного диапазона:
+ xlim(-5000, 5000)
Для получения дополнительной информации ознакомьтесь с описанием coord_cartesian
.
RStudio cheatsheet для ggplot2
делает это довольно ясным визуально. Вот небольшой раздел этой таблицы:
![введите описание изображения здесь]()
Распространяется в CC BY.
Ответ 2
Быстрое примечание: если вы также используете coord_flip()
для переключения оси x и y, вы не сможете установить пределы диапазона с помощью coord_cartesian()
, поскольку эти две функции являются эксклюзивными (см. здесь).
К счастью, это простое решение; установите пределы в coord_flip()
следующим образом:
p + coord_flip(ylim = c(3,5), xlim = c(100, 400))
Это просто изменяет видимый диапазон (т.е. не удаляет точки данных).