今天继续练习小提琴图的一个变种,云雨图。云雨图是半小提琴图(“云”)与散点图(“雨”)的结合,在小提琴图的基础上增加了原始数据点的展示,既美观又包含更多的数据信息。
我们今天就来尝试学习测试云雨图的画法。
绘制云雨图,需要用到gghalves的两个函数,geom_half_violin()和geom_half_dotplot(),分别绘制“云”和“雨”。
用自带的iris数据集。
ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+
geom_violin(position = position_dodge(width = 1), scale = 'width')
如果用geom_violin函数,就是一个普通的小提琴图。
ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+
geom_half_violin()
如果用geom_half_violin函数,就是绘制小提琴图的一半。
ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+
geom_half_violin(aes(fill = Species),
position = position_nudge(x = .15, y = 0), # 偏移中心的距离;
adjust=1.5,
trim=FALSE, # 是否修缮提琴尾部
colour=NA, # 描边颜色
side = 'r') #是放左半边,还是右半边,默认是左
然后我们加入下面的点。通过geom_half_dotplot()函数实现。
ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+
geom_half_violin(aes(fill = Species),
#position = position_nudge(x = .15, y = 0), # 偏移中心的距离;
adjust=1.5,
trim=FALSE, # 是否修缮提琴尾部
colour=NA, # 描边颜色
side = 'r') +
geom_half_dotplot(aes(fill = Species),dotsize=0.4,
stackdir="down", #改变方向
# position=position_nudge(x = .1, y = 0), # 偏移中心的距离;
binwidth = 0.15, # 相当于调整点的大小;
colour=NA
)+
coord_flip() #调整X轴和Y轴方向
我们再添加个简单的分组,看下是什么效果。
iris$time <- factor(sample(1:3, nrow(iris), replace = T), levels = c(1,2,3))
加入time的分组信息。
ggplot(iris , aes(x = time, y = Sepal.Length, fill = Species))+
geom_half_violin(aes(fill = Species),
position = position_nudge(x = .15, y = 0), # 偏移中心的距离;
adjust=1.5,
trim=FALSE, # 是否修缮提琴尾部
colour=NA, # 描边颜色
side = 'r') +
geom_half_dotplot(aes(fill = Species),dotsize=0.4,
stackdir="down", #改变方向
position=position_nudge(x = -0.15, y = 0), # 偏移中心的距离;
binwidth = 0.15, # 相当于调整点的大小;
colour=NA
)+
#加入box信息
geom_boxplot(aes(fill = Species),
width=0.15, # 调整箱线图宽度;
alpha=0.5,
position = position_dodge(0.2), # 调整箱线图之间的间距;
outlier.shape = NA # 不显示离群值散点
)+
coord_flip()+
theme_bw()
网友评论