У меня один вопрос о том, как работает 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)
Второй способ работает, но у меня вопрос: почему первый график дает мне ошибку? Если я попробую с другим geom, я могу использовать параметр scale_x_date limits
. например:
ggplot(data = df) +
geom_line(aes(x = time,
y = QQQ.Adjusted)) +
scale_x_date(limits = l)
Почему это не работает с первым сюжетом?