带有重叠点的散点图并排绘制

时间:2014-08-19 14:49:42

标签: r ggplot2 scatter-plot

我正在尝试使用ggplot2为我的数据创建一个图表。我希望在geom_boxplot()之上设置散点图,这样我就可以在实际分布的顶部显示点。

在我的数据中,x有一些不同的分类值(YearGender)和y的一系列分析值。如果在同一x类别中存在具有接近y值的点,我想在水平线上并排绘制这些点。我曾尝试使用geom_jittergeom_pointposition_dodgeposition_stackposition_jitter,但我对R和I相对较新&# 39; m无法实现此要求。

我真的很感激我应该如何解决这个问题。截至目前,我正在使用data.frame并将其投放到典型的ggplot2图表管道(geom_boxplot(...) + geom_jitter(...) +等)

谢谢!

编辑:

示例数据(df):

RecNo    Gender    Value
  1       M         12.0
  2       M         13.2
  3       F         13.4
  4       M         14.5
  5       F         16.0
  6       M         19.3
  7       F         7.5
  8       M         9.7
  9       F         11.2
  10      M         15.6

我的代码:

ggplot(df, aes(factor(Gender,levels=rev(levels(Gender))),Value)) 
+ stat_boxplot(geom='errorbar')
+ geom_boxplot(outlier.size=0,position=position_dodge(1),width=0.5)
+ geom_jitter(size=2,
position=position_dodge(width=0.1,height=0),show_guide=FALSE)
+ ylab("Plasma Value") +xlab(label="Gender")
+ scale_y_continuous(breaks=seq(0,90,5))
+ ggtitle("Distribution")

编辑2:

虽然代码只是我的尝试到达我想去的地方,但我确信这是我的方法,而不是有缺陷的代码。我的最终目标是自定义散点图,使得太近的点是“堆积”的。并排侧。我很欣赏有关如何思考这个问题的建议。谢谢。

2 个答案:

答案 0 :(得分:2)

我经常在geom_dotplot的箱形图顶部使用点图。对于点密度点图,具有相似值的点彼此相邻堆叠。这样可以了解样本分布的形状,超出了盒子图所示的范围。

使用垂直框图,您将要使用binaxis参数沿y轴堆叠点图。我经常选择使用居中的点图(带stackdir),因为我觉得它对盒子图看起来不错。

基本示例:

ggplot(mtcars, aes(factor(cyl), mpg)) +
    geom_boxplot() +
    geom_dotplot(binaxis = "y", stackdir = "center")

答案 1 :(得分:0)

这是一个建议。我在geom_something()中删除了细节。如果您想知道如何使用geom_ * ,可以使用this link。我希望这个示例能为您提供ggplot2的一些想法。如果您需要更多帮助,请告诉我。

library(ggplot2)

### Create a sample data
recNo <- 1:100
gender <- rep(c("M","F"), each = 1, times = 50)
value <- runif(100, 100, 500)

foo <- data.frame(recNo,gender, value, stringsAsFactors=F)
foo$gender <- as.factor(foo$gender)

### Draw boxplots
ana <- ggplot(foo, aes(x = gender, y = value)) +
         geom_boxplot() +
         geom_jitter() +
         xlab("Gender") +
         ylab("Plasma value") +
         ggtitle("Distribution")

ana