Ben*_*enH 7 r data-visualization smooth ggplot2
我有一个包含以下变量和类似值的数据集:
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
Run Code Online (Sandbox Code Playgroud)
我已经成功创建了一个图表,显示了所有的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)
Run Code Online (Sandbox Code Playgroud)
整套数据 -
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)
Run Code Online (Sandbox Code Playgroud)
Dan*_* M. 11
如果您只想"放大",可以使用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)
Run Code Online (Sandbox Code Playgroud)
如果要为抖动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)
Run Code Online (Sandbox Code Playgroud)
更新的答案:所以,我一直在寻找完全不同的东西,并偶然发现了我需要的答案。
而不是ylim(0,yMax)一应该使用coord_cartesian(ylim = c(0, yMax))
看起来coord_cartesian只是“缩放”图表而不是截断所包含的数据。