R установить сюжетный фон на основе даты - PullRequest
3 голосов
/ 07 февраля 2012

У меня есть график финансовой активности и пара с промежуточными суммами. enter image description here Вещи немного заняты, и у меня возникают проблемы с разграничением финансового (заканчивается 30 июня) и календарного года.Есть ли способ установить фон для разных цветов в зависимости от даты?

Другими словами, можно ли установить фон в светло-зеленый, где 2009-06-30 <дата <2010-07-01? </p>

Ответы [ 3 ]

5 голосов
/ 07 февраля 2012

Проверьте xblocks.zoo в пакете зоопарка.например, example(xblocks.zoo)

4 голосов
/ 10 февраля 2012

Примените часть обоих предложений @ G-Grothendieck и @vincent - используйте rect в пакете zoo. zoo отлично подходит для любой визуализации временных рядов.

library(zoo)
#random data combined with time series that starts in 2009-01
v <- zooreg(rnorm(37), start = as.yearmon("2009-1"), freq=12)
plot(v, type = "n",xlab="",xaxt="n")
#this will catch some min and max values for y-axis points in rect
u <- par("usr")
#plot green rect - notice that x-coordinates are defined by date points
rect(as.yearmon("2009-6-30"), u[3], as.yearmon("2010-7-1"), u[4], 
        border = 0, col = "lightgreen")
lines(v)
axis(1, floor(time(v)))
#customized x-axis labels based on dates values
axis(1,at=c(2009.4, 2010.5),padj=-2,lty=0,labels=c("start","end"),cex.axis=0.8)

enter image description here

2 голосов
/ 07 февраля 2012

Вы можете построить серые прямоугольники с помощью rect, прежде чем строить кривые. Вам также понадобятся размеры области печати: они в par("usr").

library(quantmod)
getSymbols("A")
plot( index(A), coredata(Ad(A)), type="n" )
# This example uses calendar years: adapt as needed
dates <- c( 
  ISOdate( year(min(index(A))),     1, 1 ),
  ISOdate( year(max(index(A))) + 1, 1, 1 )
)
dates <- as.Date(dates)
dates <- seq.Date(dates[1], dates[2], by="2 year")
rect( 
  dates, 
  par("usr")[3], 
  as.Date( ISOdate( year(dates) + 1, 1, 1 ) ),
  par("usr")[4], 
  col="grey",
  border=NA
)
lines(index(A), coredata(Ad(A)), lwd=3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...