如何在R geom_dotplot中设置固定的点大小

时间:2018-08-28 17:38:01

标签: r ggplot2

我一直为此苦苦挣扎。我正在尝试创建一组“盒须”图,并使用ggplot2添加单个数据点。基本上,我使用循环从给定的数据集中创建多个独立的图。

我正在得到想要的东西。但是,在不同的图之间,点的大小差异很大:

small dots

enter image description here

vs large dots

enter image description here

据我了解,点的大小取决于二进制宽度。但是,即使我设置了一定的binwidth并选择了method=histodot而不是默认值,这也不会改变。有什么想法如何将点设置为固定大小?

下面是代码的摘录,该代码将在每个循环中针对绘图执行:

p <- ggplot(data=t, mapping=aes(x=get(feature, t), y=get(response, t)));
p <- p + geom_boxplot(alpha = 0, size=0.2, width=0.4); 
p <- p + geom_dotplot(alpha=0.7, aes(color=get(feature, t), fill=get(feature, t)) ,binaxis="y",stackdir="center", bindwidth=5, method=histodot, dotsize=2);
p <- p + guides(colour =FALSE, fill=FALSE);
p <- p + facet_wrap(grouping, ncol=1, nrow=1);
ggsave(paste(s, ".pdf", sep=""), plot=p);

谢谢!

编辑:这是一个sample data集和一个代码(图形看起来与示例不同,但是问题仍然相同)。

function(x, feature="Modification", response="FC", grouping="Sequence", alpha = 0.05, plot=TRUE )
{
    for(s in unique(get(grouping, x)))
    {
        t <- x[get(grouping, x) == s,];
        if( (length(unique(get(feature, t))) > 1) && (length(unique(get(feature, t))) < length(get(feature, t))) )
        {
            y <- (anova(aov(get(response, t) ~ get(feature, t), data = t)));
            if(y$"Pr(>F)"[1] < alpha)
            {
                print(t[1,1:2]);
                print(y);
                if(plot)
                {
                    p <- ggplot(data=t, mapping=aes(x=get(feature,t), y=get(response, t)));
                    p <- p + geom_boxplot(alpha = 0, size=0.2, width=0.4); 
                    p <- p + geom_dotplot(alpha=0.7, aes(color=get(feature, t), fill=get(feature, t)) ,binaxis="y",stackdir="center", binwidth=0.05, method="histodot", dotsize=0.8);
                    p <- p + guides(colour =FALSE, fill=FALSE);
                    p <- p + facet_wrap(grouping, ncol=1, nrow=1);
                    ggsave(paste(s, ".pdf", sep=""), plot=p);
                }
            }
        }
    }
}

0 个答案:

没有答案