2016-05-17 6 views
0

Ich bin neu in R, also bitte bedenken Sie dies bei der Untersuchung meiner vermutlich uneleganten Versuche, Probleme zu lösen.Etiketten für Scatterplot-Matrix in R

Die Daten, die ich verwende, stammen aus einer verhaltenspsychologischen Studie. Ich habe einen Datenrahmen mit 6 verschiedenen Parametern (genannt mu, sigma, tau, v, a, Ter) aus jeweils 3 verschiedenen Verhaltensaufgaben. Zusätzlich gibt es 2 Stimulustypen, Gesichts- und Hausbilder. colnames(plot_data) ergibt sich folgendes:

[1] "subject"      "v.DelayedNMatchingFaces"  
[3] "a.DelayedNMatchingFaces"  "Ter.DelayedNMatchingFaces" 
[5] "mu.DelayedNMatchingFaces"  "sigma.DelayedNMatchingFaces" 
[7] "tau.DelayedNMatchingFaces" "v.DelayedNMatchingHouses"  
[9] "a.DelayedNMatchingHouses"  "Ter.DelayedNMatchingHouses" 
[11] "mu.DelayedNMatchingHouses" "sigma.DelayedNMatchingHouses" 
[13] "tau.DelayedNMatchingHouses" "v.MorphFaces"     
[15] "a.MorphFaces"     "Ter.MorphFaces"    
[17] "mu.MorphFaces"    "sigma.MorphFaces"    
[19] "tau.MorphFaces"    "v.MorphHouses"    
[21] "a.MorphHouses"    "Ter.MorphHouses"    
[23] "mu.MorphHouses"    "sigma.MorphHouses"   
[25] "tau.MorphHouses"    "v.verificFaces"    
[27] "a.verificFaces"    "Ter.verificFaces"    
[29] "mu.verificFaces"    "sigma.verificFaces"   
[31] "tau.verificFaces"    "v.verificHouses"    
[33] "a.verificHouses"    "Ter.verificHouses"   
[35] "mu.verificHouses"    "sigma.verificHouses"   
[37] "tau.verificHouses" 

Nun, ich brauche bivaraite Scatterplots zu tun, die einen einzigen Parameter enthalten, aber jeder Aufgabe, so möchte ich eine 3x3 Scatterplotmatrix tun (z .: a.DelayedNMatchingFaces, a.MorphFaces, a.verificFaces). Diese Matrix wird in einem PNG gespeichert, das nach dem Parameter und dem Stimulustyp benannt ist (also zum Beispiel "a_H.png", wenn es der Parameter a für Hausreize ist). Ich habe eine for-Schleife erstellt, die durch die Spalten geht und eine Matrix der Variablen aus Spalte i, Spalte i+12 und Spalte i+24 streuplot erstellt, weil jeder Parameter alle 12. Schritt in der Kopfzeile erscheint. Die Schleife sieht wie folgt aus:

for (col_ix in 2:13) { 

    i <- col_ix + 12 
    j <- col_ix + 24 

    param_col <- colnames(plot_data)[col_ix] 
    param <- strsplit(param_col,"[.]")[[1]][1] 

    if (grepl("Faces", colnames(plot_data)[col_ix]) == TRUE) { 
    stim_col <- "F" 
    } 
    else { 
    stim_col <- "H" 
    } 

    png(paste(param, stim_col, ".png", sep="_")) 
    scatterplotMatrix(~ plot_data[ ,col_ix] + plot_data[ ,i] + plot_data[ ,j] , span=0.7, data= plot_data) 
    dev.off() 

} 

Dies scheint zu funktionieren, obwohl ich, dass es anerkennen muss tausend Möglichkeiten, es effizient, mehr zu tun, aber hey, es ist meine erste R-Schleife, eigentlich. Das Problem ist: Wenn ich die Streudiagrammmatrix als PNG-Datei speichere, werden die in den PNGs sichtbaren Plots entsprechend der in der Formel angegebenen Datenquelle gekennzeichnet. In diesem Fall wären das plot_data[col_ix], plot_data[i] und plot_data[j] (siehe unten). Die Plots sollen jedoch entsprechend den Spaltennamen beschriftet sein, damit Sie beim Betrachten sehen können, welche Variable angezeigt und mit welcher Plot geplottet wird. Es gibt ein Argument, das heißt var.label s, das habe ich schon gesehen, aber ich kann einfach nicht herausfinden, wie es jedes Diagramm benennen soll, weil die Indizes col_ix, i und j laufende Nummern sind und nicht alle drei in der Liste aufgeführt sein können var.labels Argument.

Kann jemand helfen? Vorschläge werden sehr geschätzt (übrigens, wenn sie Ratschläge enthalten, die nicht direkt mit den Variablenlabels verbunden sind). Ich entschuldige mich, wenn meine Erklärungen unprofessionell waren oder die korrekte Verwendung bestimmter Begriffe fehlte; Hoffentlich war alles verständlich. Wenn mehr Informationen benötigt werden, bitte sagen Sie mir, dann werde ich es hinzufügen.

Vielen Dank an euch alle.

+1

Werfen Sie einen Blick auf 'xlab' und' ylab'. Sie können Änderungen an Beschriftungen in einer Schleife automatisieren mit: 'ylab = names (plot_data) [j]'. Es kann sich lohnen, mit der ersten Spalte herumzuspielen, um Dinge zu bekommen, die richtig aussehen, bevor man die Runde macht. – lmo

+0

Danke! Aber das sind Befehle zur Beschriftung der x- und y-Achse eines Plots, oder? Ich versuche die diagonalen Plots in der Matrix png zu beschriften. Im Bild wird der Name der Datenquelle angezeigt.Da diese Quelle 'plot_data [, col_ix]', 'plot_data [, i]' und 'plot_data [, j]' ist, ist dies genau der Text, der in den Bildern erscheint, aber ich möchte, dass der Variablenname erscheint. 'var.labels' scheint die richtige Wahl zu sein, aber es erlaubt nicht mehr als 1 Wert (oder eine Liste oder einen Vektor, soweit ich sehen konnte) als Eingabe. Aber vielleicht habe ich Ihren Kommentar missverstanden oder bin zu sehr auf die Option "var.labels" fixiert? – Yagaba

+0

Entschuldigung, ich habe Ihre Frage falsch gelesen. Es ist normalerweise besser, es so kurz und einfach wie möglich zu halten, weil Leute eine Frage ziemlich schnell scannen werden. Sieh meinen Versuch einer Antwort. – lmo

Antwort

0

Sie könnten nur die Namen mit ij und col_ix verbunden ist wie folgt verwenden:

plot_data[ , names(plot_data)[col_ix]] + plot_data[ ,names(plot_data)[i]] 
    + plot_data[, names(plot_data)[j]] 

Dies kann sofort in Ihrem gewünschten Ergebnis nicht dazu führen, aber man kann die gleiche Methode verwenden, um die Namen für var.labels zu erhalten :

var.labels= c(names(plot_data)[i], names(plot_data)[j]) 

oder was auch immer die genaue Syntax ist. Ich habe dieses Paket nicht installiert, aber das sollte dir ziemlich nahe kommen.

+0

Danke für die Hilfe, das hat perfekt funktioniert! Groß :) – Yagaba