Как установить пределы для осей на графиках ggplot2 R? - PullRequest
323 голосов
/ 31 августа 2010

Я строю следующее:

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 вместо всего диапазона.

Как я могу это сделать?

Ответы [ 2 ]

544 голосов
/ 31 августа 2010

В основном у вас есть два варианта

scale_x_continuous(limits = c(-5000, 5000))

или

coord_cartesian(xlim = c(-5000, 5000)) 

Где первый удаляет все точки данных за пределами заданного диапазона, а второй корректирует только видимую область. В большинстве случаев вы не увидите разницы, но если вы подгоните что-либо к данным, это, вероятно, изменит соответствующие значения.

Вы также можете использовать сокращенную функцию xlim (или ylim), которая, как и первая опция, удаляет точки данных вне заданного диапазона:

+ xlim(-5000, 5000)

Для получения дополнительной информации см. Описание coord_cartesian.

Шпилька RStudio для ggplot2 наглядно демонстрирует это. Вот небольшой раздел этой таблицы:

enter image description here

Распространяется по CC BY .

34 голосов
/ 02 сентября 2016

Краткое примечание: если вы также используете coord_flip() для переворачивания осей x и y, вы не сможете установить пределы диапазона с помощью coord_cartesian(), поскольку эти две функции являются исключительными (см. здесь ).

К счастью, это легко исправить; установите свои пределы в пределах coord_flip() примерно так:

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

Это просто изменяет видимый диапазон (т.е. не удаляет точки данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...