在ggplot中跳过空的时间序列数据行

时间:2018-03-21 13:24:56

标签: r plot ggplot2

我有一个累积回报的数据集(称为Merged_Returns_Set),如下所示:

   Time                USD_THB_Close USD_CNH_Close JP225_USD_Close USD_MXN_Close GBP_USD_Close IN50_USD_Close

   <dttm>                      <dbl>         <dbl>           <dbl>         <dbl>         <dbl>          <dbl>
 1 2017-12-13 20:00:00         1.00          1.00            1.00          1.00           1.00           1.00
 2 2017-12-13 20:15:00         1.000         1.000           0.999         0.998          1.00           1.00
 3 2017-12-13 20:30:00         1.00          0.999           1.00          0.999          1.00           1.00
 4 2017-12-13 20:45:00         1.000         1.000           1.00          1.000          1.00           1.00

我想在一个ggplot上绘制所有累积回报图,所以在浏览stackoverflow之后,我想出了以下解决方案:

  df.melted <- reshape::melt(data.frame(Returns_Data_Set), id = "Time")
  ggplot(data = df.melted, aes(x = Time, y = value, color = variable)) +
  geom_point() + theme(legend.position="none") 

用于ggplot的数据集df.melted的相关部分看起来像这样(所有符号都相同):

191   2017-12-15 22:45:00    USD_THB_Close 0.9996249
192   2017-12-15 23:00:00    USD_THB_Close 0.9995326
193   2017-12-17 23:15:00    USD_THB_Close 0.9999015
194   2017-12-18 00:00:00    USD_THB_Close 0.9997478
195   2017-12-18 00:15:00    USD_THB_Close 0.9997785

查看下面的图表,如何告诉R跳过x轴上的日期,没有数据?

enter image description here

1 个答案:

答案 0 :(得分:0)

正如@bouncyball在评论中所说,你不能(据我所知)。您可以在ggplot中稍微破解它,但是可以通过面向您的两个可观察数据周期。这具有向读者清楚地表明数据存在差距的优点。我将生成一些数据来说明:

library(ggplot2)
df <- data.frame(date = seq(from = as.Date("2000-01-01"), to = as.Date("2004-12-04"), by = "day"))
df$comp <- rep(1:6, nrow(df)/6)
df$price <- rnorm(nrow(df), df$comp, 1)

# now make some missing bits
df$price[df$date < "2003-11-01" & df$date > "2001-06-01"] <- NA

# we see a gap
ggplot(na.omit(df), aes(date, price, group=comp, color=as.factor(comp))) + 
  geom_point() + theme_classic()

# make an indicator for the two periods
df$period <- ifelse(df$date < "2003-11-01", "< June 2001", "> Nov. 2003")
ggplot(na.omit(df), aes(date, price, group=comp, color=as.factor(comp))) + geom_point() +
  facet_wrap(~period, nrow = 1, scales = "free_x") +
  theme_classic()

reprex package(v0.2.0)创建于2018-03-21。