在ggplot2中的geom_boxplot中设置日期限制

时间:2018-09-17 20:29:44

标签: r ggplot2 boxplot

我对geom_boxplot的工作方式有一个疑问。首先,我使用日期类型数据,并尝试不绘制所有数据,而仅绘制一部分数据。

首先我加载我的包裹

library(dplyr)
library(ggplot2)
library(tibble)
library(quantmod)

我正在使用getSymbols来获取数据

yahoo <- getSymbols(auto.assign = F,Symbols = "QQQ")
chartSeries(yahoo,subset = "last 3 month")

我调整数据以在ggplot中使用

df <- yahoo %>%
  as.data.frame() %>% 
  rownames_to_column() %>% 
  rename("time" = "rowname") %>% 
  mutate(time = as.Date(time))

我设置了日期限制

l <- c(df$time[10],df$time[100])

然后我尝试绘制它

ggplot(data = df) +
  geom_boxplot(aes(x = time,
                   lower  = QQQ.Close,
                   upper  = QQQ.Open,
                   ymin   = QQQ.Low,
                   ymax   = QQQ.High,
                   middle = QQQ.Open),
               stat = "identity") +
  scale_x_date(limits = l)

我收到错误消息:

Error in if (df$xmin[i] >= df$xmax[i - 1]) { : 
  valor ausente donde TRUE/FALSE es necesario

我尝试另一种方式:

ggplot(data = df) +
  geom_boxplot(aes(x = time,
                   lower  = QQQ.Close,
                   upper  = QQQ.Open,
                   ymin   = QQQ.Low,
                   ymax   = QQQ.High,
                   middle = QQQ.Open),
               stat = "identity") +
  coord_cartesian(xlim = l)

第二种方法可行,但我的问题是:为什么第一种情节给我错误?如果我尝试使用其他几何图形,则可以使用scale_x_date limits参数。例如:

ggplot(data = df) +
  geom_line(aes(x = time,
                y = QQQ.Adjusted)) +
  scale_x_date(limits = l)

为什么这不适用于第一个情节?

0 个答案:

没有答案