2015-02-05 162 views
1

我无法在ggplot2geom_boxplot()图层顶部绘制geom_point()图层,并且已经完成了一些研究,并且似乎没有任何精确的报告问题这种性质。我的数据集中有3个因子:name,genotyperegion,我的响应变量为volume。我有工作代码来产生两个图层的情节。问题是这些点忽略fill因子geom_point(),但不是geom_boxplot()。结果是所有点都绘制在一组盒形图的中间,每个值为name。这是我构建剧情的代码。R - 在geom_boxplot上绘制geom_point(ggplot2)

meansPlot = ggplot(data=meansData,aes(x=factor(name), y=volume, fill=factor(genotype))) 
meansPlot = meansPlot + 
geom_boxplot() + 
geom_point() + 
facet_wrap(~ region, scales='free') 

我很抱歉没有创建一个可重现的数据集 - 我不是很精通模拟数据。如果没有简单的答案(我期望有这个答案,而且我可能只是错过了某些东西),我会添加模拟数据来帮助回答问题。

谢谢!

+0

'fill'不适用于点(一般),但是'颜色'。所以你必须在点上使用'color'。此外,[this](http://stackoverflow.com/q/10493084/324364)可能是一个很好的参考资料(只需使用'fill'作为箱形图)。 – joran 2015-02-05 21:45:19

+0

您可能会看到不同的情节符号[** here **](http://www.cookbook-r.com/Graphs/Shapes_and_line_types/)。对于'pch' 21-25,你可以指定填充颜色。 – Henrik 2015-02-05 21:56:47

+0

感谢您的参考joran。它证明是非常有用的。 – user26665 2015-02-06 21:06:31

回答

-1

我最终解决了它。此代码错开geom_point()geom_boxplot()内联。

meansPlot = ggplot(data=meansData, aes(x=name, y=volume, fill=genotype, color=genotype)) 
meansPlot = meansPlot + 
geom_point(position=position_jitterdodge(dodge.width=0.9)) + 
geom_boxplot(fill="white", position=position_dodge(width=0.9), alpha=0.5) + 
facet_wrap(~ region, scales='free') 

感谢大家的努力。

1

geom_point()应该使用color属性,而不是fill属性(除非使用不寻常的shape s)。看看这是否适合你:

meansPlot = ggplot(data=meansData,aes(x=factor(name), y=volume, fill=factor(genotype)), color = factor(genotype)) 
meansPlot = meansPlot + 
geom_boxplot() + 
geom_point() + 
facet_wrap(~ region, scales='free') 
+0

嗯,仍然无法正常工作。有趣的是,现在至少有一些点具有正确的水平对齐。 – user26665 2015-02-06 20:03:00

+0

此外,无论何时进行绘图,我会得到以下警告: '警告级别< - (* tmp *,value = if(nl == nL)as.character(labels)else paste0(labels,: duplicate因素水平不推荐使用 – user26665 2015-02-06 20:21:18