繁体   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