我正在尝试使用ggplot2
为我的数据创建一个图表。我希望在geom_boxplot()
之上设置散点图,这样我就可以在实际分布的顶部显示点。
在我的数据中,x有一些不同的分类值(Year
或Gender
)和y的一系列分析值。如果在同一x类别中存在具有接近y值的点,我想在水平线上并排绘制这些点。我曾尝试使用geom_jitter
和geom_point
,position_dodge
,position_stack
和position_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:
虽然代码只是我的尝试到达我想去的地方,但我确信这是我的方法,而不是有缺陷的代码。我的最终目标是自定义散点图,使得太近的点是“堆积”的。并排侧。我很欣赏有关如何思考这个问题的建议。谢谢。
答案 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