我对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)
为什么这不适用于第一个情节?