Ich habe diskrete Daten, die wie folgt aussehen:Wie sec_axis() für diskrete Daten in ggplot2 R zu verwenden?
height <- c(1,2,3,4,5,6,7,8)
weight <- c(100,200,300,400,500,600,700,800)
person <- c("Jack","Jim","Jill","Tess","Jack","Jim","Jill","Tess")
set <- c(1,1,1,1,2,2,2,2)
dat <- data.frame(set,person,height,weight)
Ich versuche, ein Diagramm mit dem gleichen x-Achse (Person) zu zeichnen, und 2 verschiedene y-Achse (Gewicht und Größe). Alle Beispiele, die ich finde, versuchen, die secondary axis (sec_axis) oder diskrete Daten unter Verwendung von Basis-Plots zu plotten. Gibt es eine einfache Möglichkeit, sec_axis für diskrete Daten auf ggplot2 zu verwenden? Edit: Jemand in den Kommentaren vorgeschlagen, ich versuche die vorgeschlagene Antwort. Allerdings habe ich in diesen Fehler jetzt laufen
Hier ist meine aktuellen Code ist:
p1 <- ggplot(data = dat, aes(x = person, y = weight)) +
geom_point(color = "red") + facet_wrap(~set, scales="free")
p2 <- p1 + scale_y_continuous("height",sec_axis(~.*1.2, name="height"))
p2
I get the error: Error in x < range[1] :
comparison (3) is possible only for atomic and list types
Alternativ jetzt habe ich das Beispiel modifizierte this example posted.
p <- ggplot(dat, aes(x = person))
p <- p + geom_line(aes(y = height, colour = "Height"))
# adding the relative weight data, transformed to match roughly the range of the height
p <- p + geom_line(aes(y = weight/100, colour = "Weight"))
# now adding the secondary axis, following the example in the help file ?scale_y_continuous
# and, very important, reverting the above transformation
p <- p + scale_y_continuous(sec.axis = sec_axis(~.*100, name = "Relative weight [%]"))
# modifying colours and theme options
p <- p + scale_colour_manual(values = c("blue", "red"))
p <- p + labs(y = "Height [inches]",
x = "Person",
colour = "Parameter")
p <- p + theme(legend.position = c(0.8, 0.9))+ facet_wrap(~set, scales="free")
p
ich einen Fehler übereinstimmen, die sagt
Ich bekomme die Vorlage, aber keine Punkte geplottet
Das sind kontinuierliche Daten (Zahlen), nicht diskret (Kategorien). – Brian
Ich erkannte, dass ich die falsche Quelle verlinkte. Ich habe das richtige verlinkt und meine Antwort mit dem Fehler aktualisiert, wenn ich es verwende – Ash
Add 'sec.axis = 'vor deiner' sec_axis (...) '. Ohne explizites Benennen des Arguments wird das zweite Argument in 'scale_y_continuous()' verwendet, und 'breaks = sec_axis (~. * 1.2, name =" height ") löst diesen Fehler aus, weil es im Kontext keinen Sinn ergibt. –