Ich möchte eine zweite Y-Achse (rechts) und eine zweite X-Achse (oben) zum folgenden (Gitter) Levelplot hinzufügen. Diese Achsen sollten nur bestimmte Zeilen und Spalten (keine Beschriftungen) anzeigen und somit die Teppichfunktion der Basisgrafik nachahmen. Wie kann das gemacht werden?Gitterplot mit einer zweiten x- und einer zweiten y-Achse?
library(lattice)
library(latticeExtra)
## Generate a correlation matrix
d <- 50
L <- diag(1:d)
set.seed(271)
L[lower.tri(L)] <- runif(choose(d,2))
Sigma <- L %*% t(L)
P <- cor(Sigma)
## Panel function
my_panel <- function(...) {
panel.levelplot(...)
panel.abline(h = (1:4)*10, v = (1:4)*10, lty = 2)
panel.axis(side = "top", at = (1:50)-0.5, draw.labels = FALSE) # maybe a panel axis could do it? why not centered?
}
## Plot
obj1 <- levelplot(P, xlab = "Column", ylab = "Row",
col.regions = grey(c(seq(1, 0, length.out = 600))),
panel = my_panel)
obj2 <- xyplot(NA~NA, ylim = c(0, 50),
scales = list(x = list(at = (1:50)-0.5, labels = rep("", 50)),
y = list(at = (1:50)-0.5, labels = rep("", 50))))
doubleYScale(obj1, obj2, use.style = FALSE) # idea based on latticeExtra; only gives a 2nd y-axis, though
Können Sie machen es klar, was der gewünschte Ausgang? Vielleicht erstellen Sie eine Skizze, um zu zeigen, was Sie erstellen möchten? Sollen die zweiten Achsen unterschiedliche Maßstäbe haben? Versuchst du nur Dinge zu beschriften? – MrFlick
Ich versuche, bestimmte Zeilen und Spalten in Blockmatrizen anzugeben, wenn Korrelationsmatrizen gezeichnet werden. Die Blöcke entsprechen Branchen und Teilsektoren der Daten. Der obige Ansatz über panel.abline() funktioniert gut für Sektoren, aber die Subsektoren sind einfach zu viele. Ähnlich wie teppich(), möchte ich die Zeilen und Spalten der Subsektoren außen oben und rechts (2nd Achsen) angeben. –
BTW, es gibt eine 'panel.rug', aber es zeigt nicht die Teppiche auf der Außenseite der Plot-Region. –