Um das graphics
Paket in R zu verwenden, eine neue Variablen wie die Werte in var.a
und var.b
in Anteile der Maximalwerte in dem jeweiligen Variable umgewandelt schaffen könnte:
test <- data.frame(group = 1:10, var.a = rnorm(n = 10, mean = 500, sd = 20),
var.b = runif(10))
funProp <- function(testCol) {
test[, testCol]/max(test[, testCol])
}
test$var.a.prop <- funProp("var.a")
test$var.b.prop <- funProp("var.b")
Dann Zeichnen Sie die Zeichnung mit barplot()
ohne die Achsen:
barplot(t(as.matrix(test[, c("var.a.prop", "var.b.prop")])), beside = TRUE,
yaxt = "n", names.arg = test$group)
Dann fügen Sie die Achsen links und rechts hinzu, indem Sie die ursprünglichen Wertebereiche für die Beschriftungen (das labels
Argument) und die proportionalen Wertebereiche verwenden, um die Beschriftungen auf die Achsen zu setzen (das at
Argument) (dieser Teil ist nicht hübsch, aber er wird auch erledigt den Job):
axis(2, at = seq(0, max(test$var.a.prop), length.out = 10),
labels = round(seq(0, max(test$var.a), length.out = 10)))
axis(4, at = seq(0, max(test$var.b.prop), length.out = 10),
labels = round(seq(0, max(test$var.b), length.out = 10), 2))
(Sorry für den Mangel eines Bildes)
EDIT:
zu den Achsen ein wenig pretty
er zu bekommen,
myLeftAxisLabs <- pretty(seq(0, max(test$var.a), length.out = 10))
myRightAxisLabs <- pretty(seq(0, max(test$var.b), length.out = 10))
myLeftAxisAt <- myLeftAxisLabs/max(test$var.a)
myRightAxisAt <- myRightAxisLabs/max(test$var.b)
barplot(t(as.matrix(test[, c("var.a.prop", "var.b.prop")])),
beside = TRUE, yaxt = "n", names.arg = test$group,
ylim=c(0, max(c(myLeftAxisAt, myRightAxisAt))))
axis(2, at = myLeftAxisAt, labels = myLeftAxisLabs)
axis(4, at = myRightAxisAt, labels = myRightAxisLabs)
Sehr schlauer Weg. Vielen Dank. Gibt es eine Möglichkeit, die Achse etwas hübscher aussehen zu lassen? – ECII
@ECII, siehe oben für einen Vorschlag, um schönere Achsen zu erhalten. – BenBarnes