我一直为此苦苦挣扎。我正在尝试创建一组“盒须”图,并使用ggplot2添加单个数据点。基本上,我使用循环从给定的数据集中创建多个独立的图。
我正在得到想要的东西。但是,在不同的图之间,点的大小差异很大:
vs large dots。
据我了解,点的大小取决于二进制宽度。但是,即使我设置了一定的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);
}
}
}
}
}