2016-11-07 4 views
1

Ich möchte diesen Datenrahmen mit Monat auf x-Achse plotten.Plot monatliche Daten mit xyplot mit R

month value1 value2 value3 value4 
1 Okt 19.5505 19.6145 19.5925 19.3710 
2 Nov 21.8750 21.7815 21.7995 20.5445 
3 Dez 25.4335 25.2230 25.2800 22.7500 

t = read.csv("Mappe1.csv", header = TRUE, sep=";", dec = ".", fill = TRUE, comment.char = "") 

t$m <- factor(t$m, levels = c("Okt", "Nov", "Dez")) 

library(Hmisc) 

xyplot(t$value1~t$m, type = "l", col = "red", ylab="values") 
lines(t$value2~t$m, type = "l", col = "cyan") 
lines(t$value3~t$m, type = "l", col = "purple") 
lines(t$value4~t$m, type = "l", col = "black", lwd = 2) 
legend("topleft", legend=c("value1", "value2", "value3", "value4"), 
    col=c("red", "cyan", "purple", "black"), lty=1:1, cex=0.8) 

es funktionierte für dieses Beispiel sehr gut. aber wenn ich es exactely die gleiche Art und Weise versucht, aber mit unterschiedlichen Werten, nur Wert1 ist plottet und ich bekomme immer folgende Fehler:

Error in plot.xy(xy.coords(x, y), type = type, ...) : 
    plot.new has not been called yet 
Error in strwidth(legend, units = "user", cex = cex, font = text.font) : 
    plot.new has not been called yet 

ich bereits angewendet plot.new() und dev.off(). Aber manchmal bekomme ich immer noch diese Fehler oder manchmal zeigt R keine Fehler, aber überhaupt keine.

Was könnte das Problem hier sein?

Vielen Dank im Voraus für Ihre Hilfe!

+0

Sie sind Mischgitter (Gitter/ggplot2) und die Basis-Grafiken. Verwenden Sie das eine oder das andere. –

Antwort

0

Wenn Sie die ggplot2-Methode verwenden möchten, können Sie die Daten wie folgt in ein langes Format mappen und mit ggplot2 plotten.

t <- read.table(text = "month value1 value2 value3 value4 
1 Okt 19.5505 19.6145 19.5925 19.3710 
2 Nov 21.8750 21.7815 21.7995 20.5445 
3 Dez 25.4335 25.2230 25.2800 22.7500", header = TRUE) 

t$month <- factor(t$m, levels = c("Okt", "Nov", "Dez")) 

library(tidyr) 

# "melt" the data into a long format 
# -month tells the function to "melt" everything but month 
xy <- gather(t, key = variable, value = value, -month) 

library(ggplot2) 

# for some reason you need to specify group and color to make things work 
ggplot(xy, aes(x = month, y = value, group = variable, color = variable)) + 
    theme_bw() + 
    geom_line() 

enter image description here

+0

Wow perfekt, genau das brauche ich! Vielen Dank!! –