2017-01-27 6 views
1

Ziemlich neu zu R und wollte sehen, ob dies möglich ist. Ich habe die unten angegebenen Daten und möchte x und y auf der gleichen Linie plotten, so y weiter, wo x bei 19 aufgab und bei 21 auffiel, mit ggplot2.R: Plot zwei Datensätze in einer Zeile

Würde R in der Lage sein, damit umzugehen, wenn ich mehr Spalten wie, a, b, ect hätte?

enter image description here

Rote Punkte = x Grüne Punkte = y

mydata = structure(list(q = 1:7, x = c(12L, 18L, 21L, 19L, 0L, 0L, 0L), 
    y = c(0L, 0L, 0L, 0L, 21L, 25L, 23L)), .Names = c("q", "x", 
"y"), class = "data.frame", row.names = c(NA, -7L)) 
+0

Potential d anwachsen. http://stackoverflow.com/questions/37034285/graphing-3-axis-accelerometer-data-in-r/37035280#37035280 –

+0

@Lloyd Weihnachten. Ich glaube, dass die Verbindung dieselbe Frage stellte. Ich suche, aber konnte die bestimmte Frage nicht finden, die du verknüpfte, ich könnte nach ihr falsch gesucht haben. Vielen Dank. – user1901959

Antwort

1

Versuchen Sie dies mit base R Grundstück:

df <- read.table(text='q x y 
       1 12 0 
       2 18 0 
       3 21 0 
       4 19 0 
       5 0 21 
       6 0 25 
       7 0 23 ', header=TRUE) 

df$y[df$y==0] <- df$x[df$x!=0] 
plot(df$q, df$y, pch=19, col=ifelse(df$x==0, 'green', 'red'), xlab='q', ylab='x or y') 
lines(df$q, df$y, col='steelblue') 

enter image description here

lines(df$q, df$y, col='red') 
lines(df$q[df$x==0], df$y[df$x==0], col = 'green') 

enter image description here

+0

Danke Sandipan, es funktioniert. Gehen Sie von Ihrem Code, wenn ich möchte, dass die Linie die Farbe ändern, so dass die grünen Punkte eine grüne Linie bekommen würde, würde ich dann ändern sie in "Linien (df $ q, df $ y, col = ifelse (d $ x == 0, 'grün', 'rot)) – user1901959

+0

Danke Sandipan, das sieht gut aus – user1901959

2

Sie bräuchten Ihre Daten mit dem Paket tidyr und die Funktion gather (ggplot2 mag lange Daten) neu zu gestalten, dann entfernen die Punkte sind gleich Null.

library(tidyr) 
library(ggplot2) 

df <- data.frame(q = seq(1:7), 
       x = c(12,18,21,19,0,0,0), 
       y = c(0,0,0,0, 21, 25, 23)) 

plot_data <- gather(df, variable, value, -q) 

plot_data <- plot_data[plot_data$value != 0,] 

ggplot(plot_data, aes(x = q, y = value)) + 
    geom_line(color = "black") + 
    geom_point(aes(color = variable)) 

enter image description here

+0

Danke Jake. Zu wissen, wie man das in ggplot macht, ist großartig – user1901959