下面是我正在使用的data.table。我想在longSignal列为1时绘制垂直线。
data.frame(
index = c("2011-09-09 17:00:00",
"2011-09-12 17:00:00",
"2011-09-13 17:00:00", "2011-09-14 17:00:00",
"2011-09-15 17:00:00", "2011-09-16 17:00:00", "2011-09-19 17:00:00",
"2011-09-20 17:00:00", "2011-09-21 17:00:00",
"2011-09-22 17:00:00", "2011-09-23 17:00:00", "2011-09-26 17:00:00",
"2011-09-27 17:00:00", "2011-09-28 17:00:00", "2011-09-29 17:00:00",
"2011-09-30 17:00:00", "2011-10-03 17:00:00",
"2011-10-04 17:00:00", "2011-10-05 17:00:00", "2011-10-06 17:00:00",
"2011-10-07 17:00:00"),
EURUSD.Close = c(1.36534, 1.367895, 1.36783, 1.37546, 1.38764, 1.38005,
1.36849, 1.37009, 1.35722, 1.346385, 1.35002, 1.353255,
1.35825, 1.35425, 1.359705, 1.33876, 1.31759, 1.33489, 1.33482,
1.34374, 1.33771),
longSignal = c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0)
)
这是我正在ggplot中尝试使用的代码
ggplot(RSI_data, aes(index, EURUSD.Close)) +
geom_line() +
geom_vline(aes(xintercept = as.numeric(RSI_data$index[which(RSI_data$longSignal == 1)]),
size = 2, colour = "red"))
我一直遇到错误。谁能告诉我该怎么做?一世 预先感谢!
答案 0 :(得分:2)
您可以尝试以下方法:
# convert index to date-time format; this makes x-axis continuous rather than
# categorical, so you don't have to specify the group for geom_line.
RSI_data$index <- as.POSIXct(as.character(RSI_data$index))
ggplot(RSI_data,
aes(x = index, y = EURUSD.Close)) +
geom_line() +
geom_vline(data = subset(RSI_data, longSignal == 1), # filter data source
aes(xintercept = index),
size = 2, colour = "red")
答案 1 :(得分:1)
如果您将xintercept
放在aes()
之外,那么它会起作用。此外,您可能还会收到另一个错误消息,说geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
,因此group=1
可以阻止该错误
ggplot(RSI_data, aes(index,EURUSD.Close)) +
geom_line(group=1) +
geom_vline(xintercept = as.numeric(RSI_data$index[which(RSI_data$longSignal == 1)]),
size = 2, colour = "red")