2016-01-15 12 views
5

Ich versuche, ein Diagramm mit den Schätzungen und Konfidenzintervalle aus der gleichen Regression für eine Reihe von Ländern zu generieren. Ich führte die Regressionen unter Verwendung dplyr 's group_by(country), und dann aggregierte ich alle Ergebnisse in einen Datenrahmen mit broom' s tidy().ggplot2: geom_pointrange() facet_grid() mit coord_flip() und freien Skalen

Wenn Sie die Grafik von diesem Datenrahmen zu schaffen (die so genannten bycountry1), betreiben ich den folgenden Code:

ggplot(bycountry1, aes(x = country, y = estimate, ymin = estimate - std.error * 2, ymax = estimate + std.error * 2)) + 
    geom_hline(yintercept = 0, colour = "black", lty = 2) + 
    geom_pointrange() + 
    coord_flip() + facet_grid(. ~ term, scales = "free") 

here is the graph I get

Das ist, was ich will, mit der Ausnahme, dass ich das haben möchte Skalen für jede Box unterschiedlich sein, so dass sie alle mehr wie die religious1 Box aussehen würde. Da dies die Variable mit der größten Variabilität ist, dominiert sie die Skala, und in den meisten der anderen Boxen können Sie die Varianz nicht sehen. Wie der Code oben zeigt, habe ich scales = "free" in facet_grid() angegeben und ich habe alle Varianten versucht, auch mit facet_wrap(), und ich kann das nicht zum Funktionieren bringen.

+2

Wie wäre es mit 'geom_errorbarh' statt' coord_flip' auf horizontale Fehlerbalken zu erhalten? – aosmith

+0

Das ist eine gute Idee. Vielen Dank! Ich hatte es schon einmal ausprobiert und es sah nicht gut aus, aber ich habe gerade gesehen, dass man die 'Höhe' von' geom_errorbarh' ändern und auch einen 'geom_point' hinzufügen kann, um genau das zu bekommen, wonach ich gesucht habe. Ich werde jetzt eine Antwort mit Ihrem Vorschlag hinzufügen. Danke noch einmal! –

Antwort

3

Nach dem Vorschlag von Aosmith, ich habe es funktioniert mit geom_errorbarh und Entfernen coord_flip(). Ich musste auch die height der geom_errorbarh auf 0 setzen und eine geom_point für die Schätzung hinzufügen. Hier ist der Code:

ggplot(bycountry1, aes(y = country, x = estimate, xmin = estimate - std.error * 2, xmax = estimate + std.error * 2)) + 
    geom_vline(xintercept = 0, colour = "black", lty = 2) + 
    geom_point() + 
    geom_errorbarh(height = 0) + 
    facet_grid(. ~ term, scales = "free") 

Und das resultierende Bild

enter image description here

Verwandte Themen