2017-02-25 4 views
-2

Gibt es eine einfache Möglichkeit, ein kategorisches Streudiagramm mit der Basis R zu erstellen?Kategorisches Streudiagramm mit Basis R

Ich möchte, dass die X-Achsen-Etiketten die drei Spalten-Etiketten unten sind. Vielen Dank!

SW-SE  North-SW North-SE 
0.0322791 0.0466558 0.05533 
0.0300673 0.0503937 0.0590444 
0.0302151 0.0562131 0.0612469 
0.0242698 0.068037 0.0756064 
0.0315696 0.0440456 0.0449465 
0.0273471 0.0485332 0.048216 
0.0249796 0.055911 0.0529762 
0.0219699 0.0663013 0.0651523 
0.0173046 0.0467941 0.049092 
0.0224143 0.0507807 0.0526732 
0.0245645 0.0554949 0.0567835 
0.020624 0.0691155 0.0705431 
0.0208465 0.0340491 0.0525786 
0.0160655 0.0382029 0.0561054 
0.0236193 0.0441057 0.0597504 
0.0280541 0.0561134 0.0741485 
0.0242048 0.0420126 
0.0243629 0.0459014 
0.0192736 0.0476303 
0.0268329 0.0620177 
+0

Willkommen bei stackoverflow. Leider ist es nicht sehr klar, was Sie fragen. Bitte beachten Sie das Lesen auf http://stackoverflow.com/questions/how-to-ask und http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – lbusett

+0

machen zwei Spalten, eine für die Kategorie und eine für die Menge und make und object aus ihnen: pairwise = fst $ site_pair Fst = fst $ fst ## Dann das: p <- ggplot (fst, aes (Faktor (paarweise), Fst)) p + geom_boxplot() + geom_jitter() + theme_bw() + scale_y_continuous (Brüche = c (0, 0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08)) + Labs (x = "Transekte", y = Ausdruck (F [ST])) + Thema (panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.background = element_blank(), axis.line = element_line (color = "black")) –

Antwort

0

Ich denke, Sie fragen nach etwas wie ein jittered Streudiagramm. Ich persönlich nur wie diese mit einem boxplot hinter ihnen so ist es hier:

df = read.table(text = 
    "SW-SE  North-SW North-SE 
    0.0322791 0.0466558 0.05533 
    0.0300673 0.0503937 0.0590444 
    0.0302151 0.0562131 0.0612469 
    0.0242698 0.068037 0.0756064 
    0.0315696 0.0440456 0.0449465 
    0.0273471 0.0485332 0.048216 
    0.0249796 0.055911 0.0529762 
    0.0219699 0.0663013 0.0651523 
    0.0173046 0.0467941 0.049092 
    0.0224143 0.0507807 0.0526732 
    0.0245645 0.0554949 0.0567835 
    0.020624 0.0691155 0.0705431 
    0.0208465 0.0340491 0.0525786 
    0.0160655 0.0382029 0.0561054 
    0.0236193 0.0441057 0.0597504 
    0.0280541 0.0561134 0.0741485 
    0.0242048 0.0420126 NA 
    0.0243629 0.0459014 NA 
    0.0192736 0.0476303 NA 
    0.0268329 0.0620177 NA", 
    header = TRUE 
) 

jitter = 0.1 
boxplot(df, at = c(1, 2, 3)) 
points(runif(20)*jitter - jitter/2 + 1, df$SW.SE) 
points(runif(20)*jitter - jitter/2 + 2, df$North.SW) 
points(runif(20)*jitter - jitter/2 + 3, df$North.SE) 

effektiv boxplot setzt alles auf, die Positionen mit dem at Argumente steuern kann, die macht es auch einfach später die Jitterbasierten Streuung aufreihen mit points das ist genau wie plot, aber es fügt sich zu der bestehenden Abbildung.

jittered boxplot

Der Grund der Jitter wichtig ist, ist so, dass, wenn Sie mehrere (in der Nähe) gleich y Werte haben sie leicht durch den Jitter getrennt sind, und Sie können sie auseinander leichter sagen.

Der Grund, warum ich den Boxplot hinter dem Jitter bevorzuge ist, damit ich die Verteilung leichter sehen kann als mental nach dem Median und den Quartilen zu suchen.

+0

Was wäre, wenn ich drei weitere Spalten hinzufügen möchte, Nord, SW und SE? Boxplot (df, at = c (1, 2, 3, 4, 5, 6)) Punkte (runif (20) * Jitter - Jitter/2 + 1, df $ SE) Punkte (Runif (20) * Jitter - jitter/2 + 2, df $ SW) Punkte (Runif (20) * Jitter - Jitter/2 + 3, df $ North) Punkte (runif (20) * Jitter - Jitter/2 + 4, df $ ' North-SW') Punkte (runif (20) * Jitter - Jitter/2 + 5, df $ 'North-SE') Punkte (runif (20) * Jitter - Jitter/2 + 6, df $' SW- SE') Gibt mir das: Fehler in xy.coords (x, y): 'x' und 'y' Längen unterscheiden sich –

+0

Ich weiß nicht, wie Ihre neue 'df' aussieht, aber das sollte funktionieren' df $ SW 'hat die gleiche Länge wie die anderen. Ich habe '' points (runif (20) ... 'hart programmiert, aber es sollte' points (runif (nrow (df)) ... 'sein.) Der Fehler, den du siehst, sieht aus wie' points() 'zwei Argumente von verschiedene Längen. – vincentmajor