R/ggplot2: сглаживание всего набора данных при применении крышки ylim
UPDATE: я нашел ответ... включил его ниже.
у меня есть набор данных, который содержит следующие переменные и похожие значения:
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
просто "масштабирует" график вместо усечения включенных данных.