2017-04-13 3 views
1

Ich versuche in einem Graph zwei Variablen zu kombinieren, einen als geom_pointrange [weil ich eine Minimum- und Maximumdarstellung benötige (Konfidenzintervall 2,5% und 97,5% und sein Median (50%)Kombinieren von zwei Variablen ggplot: geom_pointrange und geom_point

]

andere Variable ist ein geom_point, durch Median anderer Kalkül gemacht

ich diese Darstellungen ggplot machen gefunden, aber ich habe es nicht zusammen bekommen, durch.

#inputs 
x <- seq(1:10) 
n <- length(x) 
yone <- 2 * runif(n) 
ytwo <- runif(n) 
ythree <- ytwo * 0.2 
yfour <- ytwo * 2 

df <- data.frame(x, yone, ytwo, ythree, yfour); df 


library (ggplot2) 

#yone and ytwo must be points 
#ythree and yfour are min and max confidence interval (vertical line) 

ggplot(df, aes(x, y = value, color = variable)) + 
geom_pointrange(aes(ymin = ythree, ymax = yfour)) + 
geom_point(aes(y = yone, col = "yone")) + 
geom_point(aes(y = ytwo, col = "ytwo")) + 
geom_line(aes(y = yfour)) 

Kann mir jemand helfen bitte?

+0

Was sollte das Ergebnis aussehen? Können Sie uns auf eine ähnliche Grafik hinweisen? Außerdem wird Ihr Beispiel momentan nicht ausgeführt, da das von Ihnen angegebene Dataset nicht "value" oder "variable" enthält. – aosmith

Antwort

0

Hier ist eine mögliche Lösung, um die Art der Handlung zu erreichen, die Sie anstreben. Ich habe das Paket reshape2 verwendet, um Ihre Daten in eine lange Form zu ändern. Es gibt viele Möglichkeiten zum Umformen, einschließlich tidyr (sammeln), Basis R (neu formen) und data.table (schmelzen). Für die yone Zeilen im geschmolzenen data.frame habe ich die Konfidenzintervalle auf NA festgelegt, da Sie diese nicht berechnet haben. Schließlich habe ich geom_linerange zusammen mit geom_point anstelle von geom_pointrange verwendet, um die Werte anmutig zu behandeln.

library(ggplot2) 
library(reshape2) 

# Reshape data to long form. 
mdat <- melt(df, id.vars=c("x", "ythree", "yfour")) 

# Set confidence intervals to NA for yone values, 
# values for which you didn't compute CIs. 
mdat[mdat$variable == "yone", c("ythree", "yfour")] <- NA 

p = ggplot(data=mdat, aes(x=x, y=value, colour=variable, ymin=ythree, ymax=yfour)) + 
    geom_linerange() + 
    geom_point(size=3) + 
    geom_line(aes(y=yfour), linetype="dotted") 

ggsave ("plot.png", p, height=4, width=6, dpi=150) 

enter image description here

Verwandte Themen