2016-05-31 6 views
2

Я думаю, что моя проблема лучше всего объяснить на примере:Изменение xlim автоматически изменяет ylim для geom_density

set.seed(12) 
n <- 100 
x <- rt(n, 1, 0) 

library("ggplot2") 
p <- ggplot() + geom_density(aes(x)) 
p 
p + xlim(min(x), 300) 

default xlim

new xlim

Почему ось у автоматически изменяется при изменении xlim? Плотность не должна меняться, поэтому для меня это не имеет смысла. Когда я использую базовый график, этого не происходит.

plot(density(x)) 
plot(density(x), xlim = c(min(x), 300)) 

ответ

3

Использование xlim полностью исключает наблюдения, находящиеся за пределами диапазона. Попробуйте использовать p + coord_cartesian(xlim = c(min(x), 300)).

+0

Спасибо, вещь с coord_cartesian работает. Однако нет x-значений больше 300. Чтобы сделать это более понятным: проблема также возникает для p + xlim (min (x), max (x) + 300) – Heidi

+0

Я не уверен, что он делает точно, но используя ' xlim', кажется, «расширяет» плотность до конца указанного интервала, поэтому нажатие максимально вниз. Если вы играете с ограничениями, например. 'xlim (min (x), 200)', 'xlim (min (x), 100)' и т. д., вы увидите, что пик приближается к 0,3 при приближении к фактическому max (x). Это почти так, как если бы 'xlim()' добавляет наблюдения для каждого значения x в диапазоне. Weird. – eminik

+0

См. Github issue https://github.com/hadley/ggplot2/issues/1643 – Heidi

Смежные вопросы