[英]R/ggplot2: smooth on entire dataset while enforcing a ylim cap
我有一個包含以下變量和類似值的數據集:
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)
如果您只想“放大”,可以使用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
只是“縮放”圖形而不是截斷包含的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.