geom_smooth() - и масштабирование оси y, потеря данных от сглаживания

Прошу прощения, что этот пример не очень хорош, но он подчеркивает суть.

mtcars$tran <- factor(mtcars$am, labels=c("Man","Aut"))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) 
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_point(aes(colour=tran)) + geom_smooth(aes(colour=tran))
ggplot(mtcars, aes(x=hp, y= mpg, group=tran)) + geom_smooth(aes(colour=tran)) + scale_y_continuous(limits=c(12,60))

Я хочу нарисовать сглаженную кривую, но "увеличить масштаб", ограничив масштаб оси y. Однако, похоже, что ggplot исключает любые данные за пределами масштаба при вычислении сглаженной кривой. Да, это кажется логичным, но как мне увидеть то, что я хочу увидеть? В моих реальных данных (необработанные) значения y находятся в диапазоне от 5 до 14, но сглаженные кривые лежат полностью между 7 и 9. Таким образом, вверху остается много пустого пространства. Когда я устанавливаю значение c(7,9), он больше не использует точки вне этого диапазона для расчета сглаженной кривой, и поэтому я получаю другую кривую.

Я не могу предоставить данные, но вы можете увидеть это в данном примере. Посмотрите, как на последнем графике две точки отброшены, и последняя половина кривой "Man" не такая, как на исходном графике.

Вопрос

Если scale_y_continuous ограничивает значения данных, которые используются для построения сглаженной кривой (логично), как можно построить кривую, используя все данные, а затем "увеличить" ее (относительно оси y).

Дайте мне знать, если это неясно.

Спасибо

11
задан nzcoops 23 November 2011 в 00:28
поделиться