2016-08-09 3 views
0

Hallo stackoverflow Gemeinschaft, ich habe eine Frage bezüglich der Codierung für ggplot. Hier ist mein Code, Datenformat und Ausgabe im Moment und unten ist meine Frage.Wie man das in der Sortierung beheben kann

Datenformat:

ID time var1 var2 var3 
    a 1 2 3 4 
    a 5 6 7 8 
    b 9 11 12 13 
    b 14 15 16 17 
    c . . . . 
    c . . . . 
    and so forth 

Code:

gg1 <- ggplot() + geom_line(aes(x=TIME, y=Var1, col="red"), FILE) + 
    geom_line(aes(x=TIME, y=Var2, col="blue"), FILE) + 
    geom_point(aes(x=TIME, y=Var3), Model_20160806) + facet_wrap(~ ID)+ 
    xlab("Time (Hr)") + ylab("Concentration (ng/ml)") + ggtitle("x") 

enter image description here

Ich habe bei der Herstellung der Grundstücke im richtigen Format und jede Hilfe zu kämpfen würde sehr geschätzt.

  1. Wie Sie sehen können, wird das col = "rot/blau" als Legende und nicht als Farbe angezeigt? Gibt es eine Möglichkeit, es zu beheben?

  2. Wie füge ich Legenden für Var1, Var2, Var3 am unteren Rand der Ausgabe hinzu?

  3. Ich habe versucht, facet_wrap (~ ID, ncol = 3) in den Code hinzuzufügen, aber es funktioniert nicht und lieferte eine Null. Gibt es eine Möglichkeit, das zu beheben?

  4. Da es eine Menge von Zellproben sind, ist es eine Möglichkeit, die Grafiken auf mehrere Seiten zu machen, damit die Graphen sind sichtbar und interpretierbar

  5. schließlich zur besseren Visualisierung der Transfektion Daten habe ich versucht, mit gg1+theme_bw(), aber das funktioniert nicht.

Antwort

0

Zu Frage 2 ist der einfachste Weg, dies zu tun, ist mit dem Gitter Paket und grid.text().

library(grid) 
par(mar=c(6.5, 2, 2, 2)) 
plot(1:10,1:10) 
grid.text(x=0.2, y = 0.05, "Var1 = Birds, Var2 = Bees") 
1

Ohne ein reproduzierbares Beispiel ist es schwierig, Ihnen bei diesen Fragen zu helfen.

  1. aes(..., col="blue") Funktioniert nicht. Innerhalb aes() muss sich alles auf eine Spalte Ihres Datenrahmens beziehen. Wenn Sie eine Gruppierungsvariable im Datenrahmen haben, verwenden Sie diese, um Farbe zu definieren. Wenn Sie möchten, dass alles nur blau ist, definieren Sie die Farbe außerhalb von aes().

  2. Etwas wie scale_colour_manual(values=c("red","green","blue")). Mögliche doppelte Frage von Add legend to ggplot2 line plot.

  3. Können Sie erklären, was Sie mit facet_wrap(~ ID, ncol=3) tun möchten?

  4. Ja das ist möglich. Der einfachste Weg ist es, mehrere Grafiken zu erstellen, indem Sie Ihre x in Gruppen von 10 teilen.

  5. Wieder ein Grund, warum Sie ein reproduzierbares Beispiel benötigen. Die kurze Antwort ist, theme_bw() funktioniert für mich und ich habe keine Ahnung, warum es für Sie nicht funktionieren würde.

Zum Beispiel:

library(car) 
library(ggplot2) 
data("diamonds") 
ggplot(diamonds, aes(x = carat, y = cut, color = color)) + 
    geom_point() + 
    theme_bw() 

Edit: ein Beispiel Aufspalten des Datenrahmen in Gruppen von 10 zu geben:

# Example data 
df = data.frame(x = factor(rep(1:30, each = 10)), y1 = rnorm(300), y2 = rnorm(300)) 
# Assume that df$x is the grouping variable consisting of too many groups 
# Every df$x < 10 becomes 0, 10 < df$ < 20 becomes 1, etc. 
df$x2 = floor(as.numeric(df$x)/10) 
# Split the dataframe based on this new grouping variable df$x2 
dfSplit = split(df, df$x2) 
# do a loop over dfSplit 
for (i in 1:length(dfSplit)) { 
    dfForPlotting = dfSplit[[i]] 
    # do plotting stuff 
    ggplot(data = dfForPlotting, aes(x = y1, y = y2, color = x)) + geom_line() 
} 
+0

Vielen Dank für die Eingabe, alle von Ihnen geholfen viel. Meine einzige Frage ist, wie man in eine Gruppe von 10 verschüttet wird? Sehr geschätzt – Monklife

+0

froh zu hören, dass es geholfen hat, siehe die Bearbeitung, wie in 10er-Gruppen aufgeteilt werden. – Vandenman

Verwandte Themen