ggplot2,y限制geom_bar与faceting

时间:2016-05-25 08:31:52

标签: r ggplot2 facet

在下文中,通过选择free_y,每个比例的最大值按预期调整,但是,如何才能获得最小值以进行调整?目前,他们都是从0开始,当我真的希望上方从大约99开始到100时,下方将从大约900开始到1000.

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

1 个答案:

答案 0 :(得分:2)

您可以使用geom_linerange而不是geom_bar。执行此操作的一般方法是首先为min的每个值找到y variable,然后将最小值与原始数据合并。代码看起来像:

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)

情节看起来像:

enter image description here