2016-05-25 20 views
1

Im Folgenden, durch die Auswahl free_y, die maximalen Werte jeder Skala anpassen wie erwartet, aber wie kann ich die Mindestwerte auch anpassen? im Moment, sie beginnen beide auf 0, wenn ich will wirklich die obere Facette bei etwa 99 beginnen und bis 100 und der unteren Facette geht bei etwa 900 und geht bis 1000.ggplot2, y Grenzen auf geom_bar mit Facettierung

library(ggplot2) 
n = 100 
df = rbind(data.frame(x = 1:n,y = runif(n,min=99,max=100),variable="First"), 
      data.frame(x = 1:n,y = runif(n,min=900,max=1000),variable="Second")) 
ggplot(data=df,aes(x,y,fill=variable)) + 
    geom_bar(stat='identity') + 
    facet_grid(variable~.,scales='free') 

result

zu starten
+1

Vielleicht Link http://stackoverflow.com/questions/4106614/how-to-control-ylim-for helfen -a-facettiert-plot-mit-verschiedenen-skalen-in-ggplot2 oder http://stackoverflow.com/questions/30280499/different-y-limits-on-gplplot-facet-grid-bar-graph – Jimbou

Antwort

2

Sie könnten geom_linerange statt geom_bar verwenden. Ein allgemeiner Weg dies zu tun ist, zuerst die min von y für jeden Wert von variable zu finden und dann die Minima mit den ursprünglichen Daten zusammenzuführen. Code würde wie folgt aussehen:

library(ggplot2) 
min_y <- aggregate(y ~ variable, data=df, min) 
sp <- ggplot(data=merge(df, min_y, by="variable", suffixes = c("","min")), 
      aes(x, colour=variable)) + 
    geom_linerange(aes(ymin=ymin, ymax=y), size=1.3) + 
    facet_grid(variable ~ .,scales='free') 
plot(sp) 

Plot wie folgt aussieht:

enter image description here

+0

Brilliant. Ich wusste nie, dass das überhaupt existiert hat .... –

Verwandte Themen