Я построил свой временной ряд xts следующим образом:
library(xts)
data(sample_matrix)
prices <- as.xts(sample_matrix)[,"Close"]
pw_returns <- diff(log(prices))
plot(pw_returns, main = "", col = "darkblue", lwd=1)
Я хотел бы выделить кластеры волатильности, как это сделано на следующем графике:
кто-нибудь знает, как это сделать в R?
Возможный дубликат ggplot2: выделить область диаграммы
@RobertoMoratore; Не уверен, что это изображение ggplot2.
Также @ toyo10, пожалуйста, предоставьте минимально воспроизводимый пример. У нас нет объекта pw_returns.
@Axeman, вопрос касался выполнения в R, а не конкретно в базовом сюжете. Я думаю, что ссылка выше все еще применима.
Я не публиковал серию возврата, поскольку это не имеет значения. Вопрос был в том, есть ли у меня общая серия результатов. Можно ли это сделать без использования ggplot2 ??
@ toyo10: Будет любезно предоставить воспроизводимый пример, чтобы облегчить ответ на ваш вопрос. Это легко сделать с данными, поставляемыми с xts: data(sample_matrix, package = "xts").





Вы можете сделать это с помощью addPolygon(). Это поможет создать промежуточный объект, содержащий верхнюю и нижнюю границы заштрихованной области.
nr <- nrow(pw_returns)
shade <- cbind(upper = rep(1, nr), lower = rep(-1, nr))
shade <- xts(shade, index(pw_returns))
Теперь мы можем построить и добавить закрашенную область для любого периода, который захотим. Убедитесь, что on = -1 настроен на рисование затененной области за основного графика.
# main plot
plot(pw_returns, main = "", col = "darkblue", lwd = 1)
# add shaded region to February, 2007
addPolygon(shade["2007-02"], col = "lightpink", on = -1)