繁体   English   中英

如何用R中的geom_rect()控制xlim?

[英]How to control xlim with geom_rect() in R with facets?

目标 :绘制一个跨越绘图窗口的矩形( geom_rect )。

问题 :无法让ggplot2接受xlims。

示例

library(lubridate)
library(ggplot2)

#Data frame
df <- data.frame(time=seq(ymd_hm('2016-01-26 08:00'),ymd_hm('2016-01-26 18:00'), length.out = 100), y=rnorm(100), facto=rep(c('a','b'), each=50))

#Call to ggplot
ggplot(df, aes(time, y))+
  geom_point()+
  facet_wrap(~facto)+
  geom_rect(aes(xmin=ymd_hm('2016-01-26 07:00'), xmax=ymd_hm('2016-01-26 20:00'), ymin=-1, ymax=1), fill='skyblue4', alpha=I(0.3), data=df[1,])

在下图中,矩形不会跨越绘图窗口(期望的结果)。 矩形越宽,窗口越宽,矩形永远不会到达侧面。

在此输入图像描述

简单的答案似乎是设置xlims( 如何在ggplot2 R图中设置轴的限制? )。

但是,使用xlim似乎没有(arg被忽略),您不能将coord_cartesian与facet coord_cartesian使用,并且应用scale_x_datetime产生意外结果:

ggplot(df, aes(time, y))+
  geom_point()+
  facet_wrap(~facto)+
  geom_rect(aes(xmin=ymd_hm('2016-01-26 07:00'), xmax=ymd_hm('2016-01-26 20:00'), ymin=-1, ymax=1), fill='skyblue4', alpha=I(0.3), data=df[1,])+
  scale_x_datetime(limits = c(ymd_hm('2016-01-26 08:00'),ymd_hm('2016-01-26 19:00')))

请注意不再准确表示x值 在此输入图像描述

进一步的尝试 :我试图释放facet_wrap中的facet_wrap而没有效果。 还尝试在ggplotgeom_pointgeom_rect调用中调用xlim作为单独的行和geom_rect

geom_rect(xmin = -Inf, xmax = Inf, ymin = -1, ymax = 1,
          fill = 'skyblue4', alpha = I(0.3), data = df[1, ])

解决了这个问题:

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM