2012-01-26 27 views
5

¿Hay una solución para establecer el color cuando se utiliza plot.xts?Ajuste el color en plot.xts

This bug (todavía presente en 0.8.2) lo hace imposible. Sé que podría usar plot.zoo, pero me preguntaba si había una solución más limpia, ya que ese error no parece que va a arreglarse pronto :)

Respuesta

5

Aquí hay una versión parchada. Tuve que exportar is.OHLC de xts para que funcione. Espero que no haya efectos secundarios. Agregué un col del argumento y lo pasé al plot explícitamente.

plot.xts2 <- function (x, y = NULL, type = "l", auto.grid = TRUE, major.ticks = "auto", 
    minor.ticks = TRUE, major.format = TRUE, bar.col = "grey", 
    candle.col = "white", ann = TRUE, axes = TRUE, col = "black", ...) 
{ 
    series.title <- deparse(substitute(x)) 
    ep <- axTicksByTime(x, major.ticks, format = major.format) 
    otype <- type 
    if (xts:::is.OHLC(x) && type %in% c("candles", "bars")) { 
     x <- x[, xts:::has.OHLC(x, TRUE)] 
     xycoords <- list(x = .index(x), y = seq(min(x), max(x), 
       length.out = NROW(x))) 
     type <- "n" 
    } 
    else { 
     if (NCOL(x) > 1) 
      warning("only the univariate series will be plotted") 
     if (is.null(y)) 
      xycoords <- xy.coords(.index(x), x[, 1]) 
    } 
    plot(xycoords$x, xycoords$y, type = type, axes = FALSE, ann = FALSE, 
     col = col, ...) 
    if (auto.grid) { 
     abline(v = xycoords$x[ep], col = "grey", lty = 4) 
     grid(NA, NULL) 
    } 
    if (xts:::is.OHLC(x) && otype == "candles") 
     plot.ohlc.candles(x, bar.col = bar.col, candle.col = candle.col, 
      ...) 
    dots <- list(...) 
    if (axes) { 
     if (minor.ticks) 
      axis(1, at = xycoords$x, labels = FALSE, col = "#BBBBBB", 
       ...) 
     axis(1, at = xycoords$x[ep], labels = names(ep), las = 1, 
      lwd = 1, mgp = c(3, 2, 0), ...) 
     axis(2, ...) 
    } 
    box() 
    if (!"main" %in% names(dots)) 
     title(main = series.title) 
    do.call("title", list(...)) 
    assign(".plot.xts", recordPlot(), .GlobalEnv) 
} 

plot.xts2(as.xts(sample_matrix[,1]), col = "blue") 

enter image description here

+0

espero que esto lo hace en la próxima versión XTS! –

+1

@DrG, un pequeño pájaro pardo me dijo que el autor de esa función ya ha sido alertado sobre el problema. –

0
par(col="blue") 
plot(yourXtsObj) 
box(col="black") 
par(col="black") # reset to default 

Probado con XTS v0.9-7

1
plot(yourobject.xts) 
lines(yourobject.xts, col = 'blue') 
Cuestiones relacionadas