ggplot kombiniert zwei Plots aus verschiedenen data.frames

79

Ich möchte zwei ggplots aus zwei verschiedenen data.frames zu einem Plot kombinieren. Unten finden Sie den Code. Ich möchte Parzelle 1 & 2 oder Parzelle 3 & 4 kombinieren.

df1 <- data.frame(p=c(10,8,7,3,2,6,7,8),
             v=c(100,300,150,400,450,250,150,400))
df2 <- data.frame(p=c(10,8,6,4), v=c(150,250,350,400))

plot1 <- qplot(df1$v, df1$p)
plot2 <- qplot(df2$v, df2$p, geom="step")

plot3 <- ggplot(df1, aes(v, p)) + geom_point()
plot4 <- ggplot(df2, aes(v, p)) + geom_step()

Das muss sehr einfach sein, aber irgendwie kann ich es nicht zum Laufen bringen. Vielen Dank für Ihre Zeit.

jeroen81
quelle
8
Mithilfe der ggplot()Syntax können Sie die Daten angeben, die für jede einzelne Ebene verwendet werden sollen, z. B.geom_step(data=df2)
baptiste

Antworten:

77

Wie Baptiste sagte, müssen Sie das Datenargument auf Geomebene angeben. Entweder

#df1 is the default dataset for all geoms
(plot1 <- ggplot(df1, aes(v, p)) + 
    geom_point() +
    geom_step(data = df2)
)

oder

#No default; data explicitly specified for each geom
(plot2 <- ggplot(NULL, aes(v, p)) + 
      geom_point(data = df1) +
      geom_step(data = df2)
)
Richie Cotton
quelle
31
@ naught101 Die äußersten Klammern sind ein Trick, um den Plot in derselben Zeile wie seine Zuordnung zu drucken. Sie können diesen Trick auch mit anderen Variablen verwenden. (my_variable <- 1:5)ist eine sauberere Version von my_variable <- 1:5; my_variable.
Richie Cotton
59

Die einzige funktionierende Lösung für mich war, das Datenobjekt in der geom_line anstelle des Basisobjekts ggplot zu definieren.

So was:

ggplot() + 
geom_line(data=Data1, aes(x=A, y=B), color='green') + 
geom_line(data=Data2, aes(x=C, y=D), color='red')

anstatt

ggplot(data=Data1, aes(x=A, y=B), color='green') + 
geom_line() + 
geom_line(data=Data2, aes(x=C, y=D), color='red')

Mehr Infos hier

Andries
quelle
3

Mit diesem Trick können Sie nur qplot verwenden. Verwenden Sie die innere Variable $mapping. Sie können Ihren Plots sogar color = hinzufügen, damit dies auch in die Zuordnung eingefügt wird. Anschließend werden Ihre Plots automatisch mit Legende und Farben kombiniert.

cpu_metric2 <- qplot(y=Y2,x=X1) 

cpu_metric1 <- qplot(y=Y1, 
                    x=X1, 
                    xlab="Time", ylab="%") 

combined_cpu_plot <- cpu_metric1 + 
  geom_line() +
  geom_point(mapping=cpu_metric2$mapping)+
  geom_line(mapping=cpu_metric2$mapping)
Alexander.Iljushkin
quelle
Wie kann ich mit diesem Ansatz zwei Farben einfügen?
Wagner Jorge
1
@ WagnerJorge versuchen, qplot-Dokumente zu lesen und Farbe hinzuzufügen, wenn cpu_metric2 initialisiert wird, wie qplot(y=..., x=..., colour=...), dann Farbe innen hinzufügengeom_line(mapping..., colour=...)
Alexander.Iljushkin