2016-05-24 4 views
0

I zweiseitige Bohne Plots in R. zu schaffen versuchen Meine Daten wie folgt aussehen:Zweiseitiger Bohnenstück mit Verbindung in R

> t1 
    Country Women Kids 
1 China  2 5 
2 China  4 10 
3 China  3 10 
4 China  1 3 
5 China  2 2 
6  USA  1 1 
7  USA  1 2 
8  USA  2 1 
9  USA  2 3 
10  USA  1 0 
11 Swiss  1 3 
12 Swiss  2 6 
13 Swiss  2 5 
14 Swiss  1 2 
15 Swiss  3 9 

ich folgenden mit R-Paket "beanplot" versucht:

> t2=melt(t1) 
Using Country as id variables 
> t2$C.M=paste(t2$Country,t2$variable,sep=" ") 
> beanplot(value ~ C.M, data = t2, ll = 0.04, 
+   main = NA, side = "both",ylab = "Count", 
+   border = NA, col = list("blue", c("orange", "white")),what=c(1,1,1,1)) 

Und ich bekomme die Bohne Stellplätze: Bean plots for family structure per country

Allerdings möchte ich eine Bohne Plot, der die Beziehung von Punktepaaren erzählt (dh Frauen mit Kindern) mit Verbindungen pro Land. Es sollte ungefähr so ​​aussehen: This plot, aber mit zweiseitigem Bohnenplot statt Boxplot für jedes Land.

Gibt es einen Weg, dies zu erreichen?

Antwort

0

können Sie tun:

library(beanplot) 
library(reshape2) 
library(beeswarm) 

# melt 
d1 <- melt(t1) 
# draw the beans using the at to specify the positions, boxwex 
# to increase the size of the beans and xlim to increase the x-axis limits: 

beanplot(d1$value ~ interaction(d1$variable, d1$Country), at=c(1.5,3.5,5.5), 
     side="both",col = list("blue", c("orange", "white")), what=c(1,1,1,1), 
     boxwex=2, xlim=c(0,7)) 

# add the points 
n <- beeswarm(d1$value ~ interaction(d1$variable, d1$Country), add=T, cex=2, 
       pwcol = d1$variable, pch=16) 

# and finally the segments 
segments(matrix(n$x,5,)[,1], d[1:5, 2], matrix(n$x,5,)[,2], d[1:5, 3], lwd= 2) 
segments(matrix(n$x,5,)[,3], d[11:15, 2], matrix(n$x,5,)[,4], d[11:15, 3], lwd= 2) 
segments(matrix(n$x,5,)[,5], d[6:10, 2], matrix(n$x,5,)[,6], d[6:10, 3], lwd= 2) 

enter image description here

+0

Ihnen sehr für Ihre Antwort danken. Aber tut mir leid, das will ich nicht. Die Daten sind für jede Familie, sagen 1. Familie in China hat 2 Frauen und 5 Kinder. Also wollte ich diese zwei Punkte verbinden, indem ich zum Beispiel zwischen den zwei Bohnen in China einen Abstand mache und 2 bei Frauen mit 5 bei Kindern verbinde. Das Paket "bienenwarm" scheint interessant. Wenn ich keine Lösung finde, werde ich die Verbindungen plotten und sie manuell auf den Beanplots überlagern. –

+0

Ja, das ist, was ich gesucht habe, aber mit den Bohnen. Ich denke, ich kann mit den Vektoren in Illustrator spielen, um die Bohne in dieser Handlung zu erhalten. Oder können wir das in R machen? Vielen Dank. –

+0

@RimjhimRoyChoudhury Hier ist die Lösung. Bitte beachten Sie, dass Sie es akzeptieren, indem Sie auf den Button auf der linken Seite klicken. – Jimbou