Dies ist etwas, mit dem ich experimentiert habe, um eine Lösung für eine Weile zu finden, aber im Grunde habe ich mich gefragt, ob es eine schnelle Möglichkeit gibt, Liniendiagramme für zwei verschiedene Datensätze in ggplot2 auszuwechseln.R - ggplot ausweichen geom_lines
Mein Code ist zur Zeit:
#Example data
id <- c("A","A")
var <- c(1,10)
id_num <- c(1,1)
df1 <- data.frame(id,var,id_num)
id <- c("A","A")
var <- c(1,15)
id_num <- c(0.9,0.9)
df2 <- data.frame(id,var,id_num)
#Attempted plot
dodge <- position_dodge(width=0.5)
p<- ggplot(data= df1, aes(x=var, y=id)) +
geom_line(aes(colour="Group 1"),position="dodge") +
geom_line(data= df2,aes(x=var, y=id,colour="Group 2"),position="dodge") +
scale_color_manual("",values=c("salmon","skyblue2"))
p
Welche produziert:
Hier ist die "Gruppe 2" -Linie alle der "Gruppe 1" Linie versteckt, die nicht das, was ich ist wollen. Stattdessen möchte ich, dass die Zeile "Gruppe 2" unterhalb der Zeile "Gruppe 1" liegt. Ich habe mich umgesehen und diesen vorherigen Post gefunden: ggplot2 offset scatterplot points, aber ich kann nicht scheinen, um den Code anzupassen, um zwei geom_lines zu bekommen, um einander auszuweichen, wenn Sie getrennte Datenrahmen verwenden.
Ich habe meine Y-Variablen in numerische umgewandelt und sie leicht versetzt, um die gewünschte Ausgabe zu erhalten, aber ich fragte mich, ob es einen schnelleren/einfacheren Weg gäbe, das gleiche Ergebnis mit der Ausweichfunktion von ggplot oder etwas zu erhalten sonst.
Meine Arbeit um Code ist einfach:
p<- ggplot(data= df1, aes(x=var, y=id_num)) +
geom_line(aes(colour="Group 1")) +
geom_line(data= df2,aes(x=var, y=id_num,colour="Group 2")) +
scale_color_manual("",values=c("salmon","skyblue2")) +
scale_y_continuous(lim=c(0,1))
p
Geben Sie mir meine gewünschte Ausgabe von:
gewünschte Ausgabe:
Der numerische Ansatz kann ein wenig umständlich sein, wenn Ich versuche es zu erweitern, um es meinen tatsächlichen Daten anzupassen. Ich muss meine y-Werte in Faktoren umwandeln, sie in numerische Werte umwandeln und dann die Werte auf den zweiten Datensatz zusammenführen, so dass ein schnellerer Weg vorzuziehen wäre. Vielen Dank im Voraus für Ihre Hilfe!
Sie müssen die beiden Datensätze in einem einzigen Datensatz kombinieren, damit das Ausweichen funktioniert – Thierry
Wenn Ihre realen Datensätze wirklich so ähnlich sind lar, es wäre einfach, sie zusammen zu stapeln und einen Gruppenindex mit etwas wie 'bind_rows' aus * dplyr * hinzuzufügen. – aosmith