2017-09-18 7 views
0

Ich mache ein Diagramm aus einer Tabelle von Daten aus einem Papier. Es hat eine Spalte von Kategorien von Beziehungen, dann zwei Spalten von numerischen Variablen: die Anzahl der Beobachtungen für jede Kategorie und dann der iq Korrelation:Wie r die Anzahl der Beobachtungen für eine Kategorie zu teilen

relation num corr 
spouse  3817 0.33 
MZ-twin-tog 4671 0.86 
MZ-twin-ap 65 0.72 
DZ-twin-tog 5546 0.6 
sib-tog 26473 0.47 
sib-ap  203 0.24 
off-par 8433 0.42 
off-midpar 992 0.5 
off-par-ap 814 0.22 

Ich mag einen boxplot von (korr ~ Beziehung) machen, aber ich möchten, dass die Breiten proportional zur Anzahl der Beobachtungen für jede Kategorie sind. Leider funktioniert varwidth = TRUE nicht, da ich pro Kategorie nur eine Beobachtung habe, da ich nicht mit dem gesamten Datensatz arbeite.

Kann jemand damit arbeiten, da ich nicht die vollständigen Daten habe, nur die Ergebnisse.

P.S. Ich weiß, Boxplot ist nicht genau ein passender Graph für diesen begrenzten Datensatz, aber ich weiß nicht, wie ich sonst anzeigen soll (numerisch ~ kategorisch). Vorschläge sind willkommen!

Vielen Dank im Voraus für einen Rat!

+0

Sie können einen Box-Plot mit einfachen Übersichtsdaten wie diese machen. Die Größe der Bereiche eines Box-Plots wird durch das Minimum, Maximum, Median und das erste/dritte Quartil Ihrer Daten definiert. Box-Plots sollen die Verteilung Ihrer Daten zeigen. Was versuchen Sie zu veranschaulichen, indem Sie diese Zusammenfassung visualisieren? – Mako212

+0

Danke für die Antwort. Ich wollte visualisieren, welche Gruppen eine höhere Korrelation haben, während ich etwas mit einschließe, das zeigt, welche Gruppen ein höheres n haben (da die Gruppengrößen stark variieren). Wenn ich auf Ihr Balkendiagramm unten schaue, denke ich, dass genau das, was ich suche, nur mit meiner Variablen "corr" auf der y-Achse und meiner Variablen "num" in der Heatmap auf der rechten Seite ist. Ich bin mir sicher, dass ich den Code, den Sie zur Verfügung gestellt haben, ändern kann. Vielen Dank, das schätze ich sehr. –

Antwort

0

Daten:

df1 <- structure(list(relation = structure(c(9L, 3L, 2L, 1L, 8L, 7L, 
5L, 4L, 6L), .Label = c("DZ-twin-tog", "MZ-twin-ap", "MZ-twin-tog", 
"off-midpar", "off-par", "off-par-ap", "sib-ap", "sib-tog", "spouse" 
), class = "factor"), num = c(3817L, 4671L, 65L, 5546L, 26473L, 
203L, 8433L, 992L, 814L), corr = c(0.33, 0.86, 0.72, 0.6, 0.47, 
0.24, 0.42, 0.5, 0.22), num_pct = c(0.0748225977182734, 0.0915631003254009, 
0.00127416003450033, 0.108715254635982, 0.518935978358882, 0.00397929980005489, 
0.165307562629866, 0.019445642372682, 0.015956404124358)), .Names = c("relation", 
"num", "corr", "num_pct"), row.names = c(NA, -9L), class = "data.frame") 

Bar Grundstück wie das Betrachten (I abgebildet corr auf beiden Parzellen Farbe):

require(ggplot2) 

g1 <- ggplot(df1, aes(relation, num))+ 
    geom_bar(aes(fill=corr),stat="identity")+ 
    theme_bw() 

enter image description here

Oder den Prozentsatz jeder Antwort Plotten:

Zuerst berechnen Sie die Perce nts:

df1$num_pct <- df1$num/sum(df1$num) 

Dann Grundstück:

g2 <- ggplot(df1, aes(relation, num_pct))+ 
geom_bar(aes(fill=corr),stat="identity")+ 
scale_y_continuous(labels=scales::percent)+ 
theme_bw() 

enter image description here

Verwandte Themen