指定ylim当geom_bar条不显示(geom_bar bars not displaying w

2019-06-24 01:23发布

其中,当我指定在y轴限制杆不会呈现我在与geom_bars的问题。 我认为以下应重现该问题:

data <- structure(list(RoleCond = structure(c(1L, 1L, 2L, 2L), .Label = c("Buyer", "Seller"), class = "factor"), 
                   ArgCond = structure(c(1L, 2L, 1L, 2L), .Label = c("No Argument", "Argument"), class = "factor"), 
                   mean = c(2210.71428571429, 2142.70833333333, 2282.40740740741, 2346.2962962963), 
                   se = c(20.1231042081511, 16.7408757749718, 20.1471554637891, 15.708092540868)), 
                   .Names = c("RoleCond", "ArgCond", "mean", "se"), row.names = c(NA, -4L), class = "data.frame")

library(ggplot2)    
ggplot(data=data, aes(fill=RoleCond, y=mean, x=ArgCond)) + 
      geom_bar(position="dodge", stat="identity") + 
      geom_errorbar(limits, position=dodge, width=0.1, size=.75) + 
      scale_y_continuous(limits=c(2000,2500))

这给了我这个

没有规定的限值相同的代码工作正常。 该geom_errorbar()似乎并没有涉及到这个问题,但它确实说明在酒吧应该显示出来。

我已经尝试使用coord_cartesian(ylim=c(2000,2500))其适用于限制y轴和获取条显示,但轴标签搞的一团糟,我不明白我用它做。

感谢您的任何建议! (我,使用R 2.15.0和GGPLOT2 0.9.0)

Answer 1:

你可以尝试,与library(scales)

+ scale_y_continuous(limits=c(2000,2500),oob = rescale_none)

相反,所概述这里 。



Answer 2:

增加对我的情况下这是稍有不同的情况下,有人遇到这样的答案:

当使用position="dodge" ,在酒吧获得水平自动调整大小以填充空间,往往是远远超出了数据本身的限制。 其结果是,即使你的两个x-axisy-axis的限制是limits=c(min-1, max+1 ,对于某些数据集,所述position="dodge"可能调整它超过该极限范围内,使所述酒吧没有出现。如果你限制底为0,不像上面的情况下,这甚至可能发生。

使用oob=rescale_none两个scale_y_continous()scale_x_continuous()通过简单地切断所做的调整大小修复此问题position="dodge"

按照先前的评论,它需要package:scales所以运行library(scales)第一。

希望这可以帮助其他人在上述答案只能得到你的一部分的方式。



Answer 3:

这个工作对我以前的基于共享的链接。

p + coord_cartesian(ylim=c(5,15))


文章来源: geom_bar bars not displaying when specifying ylim
标签: r ggplot2