Ich möchte jede Zeile dieser Matrix auf separaten Plot in einem grafischen Fenster darstellen.Wie erstelle ich eine schönere Grafik für meine kategorischen Zeitreihendaten in einer Matrix?
mat <-
structure(c("g", "b", "c", "e", "g", "b", "g", "g", "e", "e",
"a", "b", "b", "e", "c", "f", "d", "f", "g", "c", "f", "g", "b",
"e", "a", "b", "c", "a", "c", "g", "c", "d", "e", "d", "b", "f",
"e", "f", "a", "f", "c", "f", "e", "f", "d", "d", "f", "a", "d",
"f"), .Dim = c(5L, 10L))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] "g" "b" "a" "f" "f" "b" "c" "f" "c" "d"
#[2,] "b" "g" "b" "d" "g" "c" "d" "e" "f" "f"
#[3,] "c" "g" "b" "f" "b" "a" "e" "f" "e" "a"
#[4,] "e" "e" "e" "g" "e" "c" "d" "a" "f" "d"
#[5,] "g" "e" "c" "c" "a" "g" "b" "f" "d" "f"
Von der Antwort auf meine yesterday's post, ich brauche diese Matrix numerische ersten zu konvertieren.
v <- as.character(mat)
lev <- sort(unique(v)) ## sorted unique labels
# [1] "a" "b" "c" "d" "e" "f" "g"
mat_int <- matrix(match(v, lev), nrow = nrow(mat))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 7 2 1 6 6 2 3 6 3 4
#[2,] 2 7 2 4 7 3 4 5 6 6
#[3,] 3 7 2 6 2 1 5 6 5 1
#[4,] 5 5 5 7 5 3 4 1 6 4
#[5,] 7 5 3 3 1 7 2 6 4 6
Jetzt verwende ich den folgenden Code, um mein Diagramm zu generieren.
par(mfrow=c(5,1))
matplot(t(mat_int)[, c(1)], yaxt = "n", type = "l", xlab = "time", ylab = "category")
axis(2, seq_along(lev), labels = lev)
matplot(t(mat_int)[, c(2)], yaxt = "n", type = "l", xlab = "time", ylab = "category")
axis(2, seq_along(lev), labels = lev)
matplot(t(mat_int)[, c(3)], yaxt = "n", type = "l", xlab = "time", ylab = "category")
axis(2, seq_along(lev), labels = lev)
matplot(t(mat_int)[, c(4)], yaxt = "n", type = "l", xlab = "time", ylab = "category")
axis(2, seq_along(lev), labels = lev)
matplot(t(mat_int)[, c(5)], yaxt = "n", type = "l", xlab = "time", ylab = "category")
axis(2, seq_along(lev), labels = lev)
Aber ich habe einige Probleme:
- Das Etikett auf der y-Achse für jede Handlung der fünf nur Teilergebnisse enthält (sagen, dass die zweite Handlung fehlt „ein "). Gibt es eine Möglichkeit, alle kategorialen Variablen auf der y-Achse für alle fünf Diagramme aufzulisten? (Das heißt, jedes Plot hat Labels: a, b, c, d, e, f, g.
- Im Moment muss ich dieses Plot auf einer großen Seite erstellen, um alle Y-Achsen-Labels anzuzeigen klar. gibt es eine Möglichkeit, meine Plots mehr nahe beieinander zu arrangieren Platz zu sparen, so dass sie in einer kleineren Seite passen könnte?
Danke.
Ich habe Sie. Ich habe versucht, "Plot" anstelle von "Matplot" zu verwenden, aber es hat immer noch nicht funktioniert. Da ich alle kategorischen Variablen auf der y-Achse auflisten wollte. –
plot (mat_int [1,], yaxt = "n", type = "l", xlab = "zeit", ylab = "kategorie") achse (2, seq_along (lev), etiketten = lev) –
Aber wenn Sie sehen sich den zweiten Plot an, selbst wenn Sie den zweiten Plot nur auf einer großen Seite zeichnen, werden Sie immer noch die kategorische Bezeichnung "a" finden. –