R/ggplot2: сглаживает весь набор данных, применяя ограничение ylim
ОБНОВЛЕНИЕ: я нашел ответ... включил его ниже.
У меня есть набор данных, который содержит следующие переменные и похожие значения:
COBSDATE, CITY, RESPONSE_TIME
2011-11-23 A 1.1
2011-11-23 A 1.5
2011-11-23 A 1.2
2011-11-23 B 2.3
2011-11-23 B 2.1
2011-11-23 B 1.8
2011-11-23 C 1.4
2011-11-23 C 6.1
2011-11-23 A 3.1
2011-11-23 A 1.1
Я успешно создал график, который отображает все значения response_time и плавную геометрию для дальнейшего описания некоторых вариаций.
Проблема, с которой я столкнулся, заключается в том, что я хочу получить более четкое представление о сглаженном значении, и в одном из городов часто встречаются "выбросы". Я могу контролировать это, добавляя ylim(0,p99) к графику, но это затем приводит к тому, что сглаживание рассчитывается только на подмножестве данных.
Есть ли способ использовать все эти данные для сглаженного графика и единственного подмножества для графика джиттера?
Мой код здесь (оба одинаковы, за исключением + ylim(0,20)
: усеченный -
ggplot(dataRaw, aes(x=COBSDATE, y=RESPONSE_TIME)) +
geom_jitter(colour=alpha("#007DB1", 1/8)) +
geom_smooth(colour="gray30", fill=alpha("gray40",0.5)) +
ylim(0,20) +
facet_wrap(~CITY)
Весь набор данных -
ggplot(dataRaw, aes(x=COBSDATE, y=RESPONSE_TIME)) +
geom_jitter(colour=alpha("#007DB1", 1/8)) +
geom_smooth(colour="gray30", fill=alpha("gray40",0.5)) +
facet_wrap(~CITY)
2 ответа
Если вы просто хотите "увеличить", вы можете использовать coord_cartesian
:
ggplot(dataRaw, aes(x=COBSDATE, y=RESPONSE_TIME)) +
geom_jitter(colour=alpha("#007DB1", 1/8)) +
geom_smooth(colour="gray30", fill=alpha("gray40",0.5)) +
coord_cartesian(ylim=c(0,20)) +
facet_wrap(~CITY)
Если вы хотите использовать подмножество данных для geom джиттера, то переопределите наследование данных:
ggplot(dataRaw, aes(x=COBSDATE, y=RESPONSE_TIME)) +
geom_jitter(data=subset(dataRaw, RESPONSE_TIME>=0 & RESPONSE_TIME<=20),
colour=alpha("#007DB1", 1/8)) +
geom_smooth(colour="gray30", fill=alpha("gray40",0.5)) +
ylim(0,20) +
facet_wrap(~CITY)
ОБНОВЛЕННЫЙ ОТВЕТ: Итак, я искал что-то совершенно другое и наткнулся на нужный мне ответ.
Вместо ylim(0,yMax)
Надо использовать coord_cartesian(ylim = c(0, yMax))
Похоже, что coord_cartesian
просто "увеличивает" график вместо того, чтобы усекать включенные данные.