2016-06-06 11 views
1

Ich benutze folgenden Code, um Forestplot zu tun.Forestplot - mehrere Variablen und Datenrahmen

Es funktioniert gut, ohne Probleme, aber ich möchte Forestplot aus zwei Datenrahmen plotten. Damit würde das Ergebnis entweder Variablen aus jedem Datenrahmen untereinander oder auf derselben Zeile mit unterschiedlicher Farbe haben.

Auch ggplot ändert die Reihenfolge meiner Variablen zu Z -> A, und ich möchte, dass sie in einer nicht-alphabetischen Reihenfolge bleiben.

forestplot <- function(d, xlab="Estimate", ylab="Study"){ 
    require(ggplot2) 
p <- ggplot(d, aes(x=x, y=y, ymin=ylo, ymax=yhi)) + 
geom_pointrange() + 
coord_flip() + 
geom_hline(yintercept=0, lty=3) + 
ylab(xlab) + 
xlab(ylab) + #switch because of the coord_flip() above 
ggtitle("...") 
return(p) 
}  
forestplot(d) 

Ergebnis wäre so etwas wie dies (ohne crappy Bearbeitung und mit mehreren varialbes) sein:

enter image description here

+0

Dies ist im forestplot Paket möglich –

Antwort

0

einfach die zwei Datenrahmen zu Beginn Ihrer Funktion binden:

forestplot <- function(d1, d2, xlab="Estimate", ylab="Study") 
    { 
    d = rbind(cbind(d1, df = "1"), cbind(d2, df = "2")) 
    require(ggplot2) 
    p <- ggplot(d, aes(x=x, y=y, ymin=ylo, ymax=yhi, color = df, group = df)) + 
    geom_pointrange(position = position_dodge(width = 0.5)) + 
    coord_flip() + 
    geom_hline(yintercept=0, lty=3) + 
    ylab(xlab) + 
    xlab(ylab) + #switch because of the coord_flip() above 
    ggtitle("...") 
    return(p) 
} 

enter image description here

EDIT

print(d1) 
      y x   ylo  yhi 
1 0.2655087 s5 0.059534088 0.4420654 
2 0.3721239 s4 0.166149325 0.5486807 
3 0.5728534 s2 0.366878788 0.7494101 
4 0.9082078 s3 0.702233215 1.0847645 
5 0.2016819 s1 -0.004292644 0.3782387 

print(d2) 
      y x   ylo  yhi 
1 0.6870228 s5 0.03534908 0.8125779 
2 0.3841037 s2 -0.26757005 0.5096588 
3 0.7698414 s3 0.11816765 0.8953965 
4 0.4976992 s4 -0.15397452 0.6232543 
5 0.7176185 s1 0.06594474 0.8431736 

Ich kann Ihre Fehler (Kommentar) mit diesen Daten nicht reproduzieren, könnte das Problem in dem Eingangsdatenrahmen sein.

+0

Vielen Dank! Das hat mir sehr geholfen! – J5H

+0

Infact ich habe immer noch ein Problem .. Das Skript, das Sie mir funktioniert, aber die Schätzungen sind nicht richtig, es zeichnen die falschen Werte, zum Beispiel: In Datenrahmen 1: CRP11 = Mittelwert 0.06406516 Ylo 0.012618338 YHI 011551199 Datenrahmen 2: CRP11 = mean -0,010406175 YLO -0,0634425313 yhi 0,04263018 – J5H

+0

.... In Datenrahmen 1 (grau): CRP11 = mittlere 0,06406516 0,012618338 YLO yhi 0,11551199 Datenrahmen 2 (gelb): CRP11 = mean -0,010406175 YLO -,0634425313 yhi 0,04263018 Noch sieht das Ergebnis so aus: https://www.dropbox.com/s/hvlksh8fac649lo/Screenshot%202016-06-08%2011.02.34.png?dl=0 Die Werte sind nicht an ihrem Platz? @bVa – J5H

Verwandte Themen