簡體   English   中英

R / ggplot2:在整個數據集上平滑,同時強制執行ylim上限

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM