Beispielcode auszuführen:Fehler abline zu einem xts Plot hinzugefügt, wenn sie in Klammern
df_2=as.data.frame(c(1:10))
rownames(df_2)=Sys.Date()+c(1:10)
xts_2=as.xts(df_2)
vline=.index(xts_2)[4]
{
png(filename = paste0(Sys.Date(),'-test',".png"), width = 800, height = 600)
plot(xts_2[,1])
print(dev.cur())
abline(v=vline, col="red")
dev.off()
}
Wenn ich die Zeilen aus png ... dev.off() und führen Sie wählen, bekomme ich die gewünschte Ausgabedatei.
Allerdings, wenn ich die Sequenz mit den Klammern ausgewählt (zum Beispiel ausgeführt werden, wenn ein bedingten erfüllt ist) laufen lasse, erhalte ich die Fehlermeldung:
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) :
plot.new has not been called yet
Das Ergebnis des Drucks (dev.cur()) Linie ist in beiden Fällen:
png
2
Danke. Das löst das Problem für mich. Beim Debuggen dieses Problems habe ich ein merkwürdiges Verhalten bemerkt: Wenn ich xts_2 plotte (gespeichert als ein Datenrahmen), erhalte ich den Fehler nicht, aber wenn ich xts_2 plotte (wie oben definiert), bekomme ich den Fehler. – rsoto74
@ rsoto74: Das liegt daran, dass der Aufruf von 'plot()' auf einem data.frame nach 'plot.default()', nicht nach 'plot.xts() 'erfolgt. 'plot.default()' erfordert kein explizites Drucken (wie ggplot2, gitter, usw.), wenn das automatische Drucken deaktiviert ist. –