【问题标题】:Dodge not working when using ggplot2使用 ggplot2 时闪避不起作用
【发布时间】:2013-06-24 17:04:49
【问题描述】:

我看到了几篇关于类似问题的帖子,但找不到合适的解决方案。由于我的数据中的count(下面的可重现示例)有重复项,因此我需要在彼此的一侧打印重叠点。人们正在使用position_dodge,但不知何故,下面的示例对我不起作用。

library('ggplot2')
myData = data.frame(split = c(rep('a',10), rep('b',10)), count = c(20,27,21,20,24,23,21,25,22,22,35,37,32,32,32,32,31,33,32,31))
p = ggplot(myData, aes(split, count)) + geom_point(aes(colour=split),  position=position_dodge(width=0.3))
p

#Getting the warning
ymax not defined: adjusting position using y instead

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    在这种情况下,你需要position_jitter() 而不是躲闪。

    ggplot(myData, aes(split, count)) + geom_point(aes(colour=split), 
                                            position=position_jitter(width=0.3))
    

    其他选择是使用geom_dotplot()

    ggplot(myData, aes(split, count)) + 
      geom_dotplot(aes(fill=split),binaxis = "y",stackdir="center")
    

    【讨论】:

    • 工作正常。谢谢。我还在http://docs.ggplot2.org/0.9.2.1/geom_dotplot.html 上找到了一些示例
    【解决方案2】:

    只是提到要专门解决“ymax 未定义”消息,您可以将您的主要 ggplot 美学更改为:

    ggplot(myData, aes(split, count,ymax=max(count)*1.05))
    

    这样就可以解决了。如果你想要的话,乘以 1.05 只是为了给注释一些喘息的空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多