重新调整ggplot geom_dotplot

时间:2015-09-28 20:51:09

标签: r ggplot2

我在创建ggplot2的数字时遇到问题。我正在使用带有中心堆叠的geom_dotplot来显示我的数据,这些数据是4个类别的离散值。

出于美观原因,我想自定义点的位置,以便

  1. 沿y轴减少点之间的空白区域(即点数值大1)
  2. 分布适合且不重叠
  3. 我已调整bindotsize以达到美学目标1,但这需要我调整ylim()参数以确保这些组适合绘图。这导致绘图具有更多的空白空间和y轴上的数字很少。

    问题:有人可以解释一种方法来调整此剧情中空白区域的大小吗?

    我的代码如下:。

    plot <- ggplot(figdata, aes(y=Counts, x=category, col=strain)) + 
                geom_dotplot(aes(fill=strain), dotsize=1, binwidth=.7, 
                             binaxis= "y",stackdir ="centerwhole", stackratio=.7) +
                ylim(18,59)
    
    plot + scale_color_manual(values=c("#E69F00", "#56B4E9")) + 
           geom_errorbar(stat="hline", yintercept="mean", 
                         aes( ymax=..y..,ymin=..y.., group = category, width = 0.5), 
                         color="black")
    

    产生:

    enter image description here

    编辑:合并抖动将允许所有数据适合,但我不想为此数据添加噪声,并且更愿意将其显示为谨慎数据。 如下所示,将binwidth和dotsize调整为0.3也适合所有数据,但是它会留下太多的空白区域。

    enter image description here

    我认为我可能必须转换数据,使得值小于1,以便使所有内容都水平拟合,并将点大小调整到足够大以减少空白区域。

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是使用coord_cartesian

plot + scale_color_manual(values=c("#E69F00", "#56B4E9")) + 
  geom_errorbar(stat="hline", yintercept="mean", 
                aes( ymax=..y..,ymin=..y.., group = category, width = 0.5), 
                color="black") +
  coord_cartesian(ylim=c(17,40))

这给了我这个情节(假数据不像你的那样整齐分布): enter image description here