【R画图学习18.2】小提琴图2---云雨图

2022-11-19  本文已影响0人  jjjscuedu

今天继续练习小提琴图的一个变种,云雨图。云雨图是半小提琴图(“云”)与散点图(“雨”)的结合,在小提琴图的基础上增加了原始数据点的展示,既美观又包含更多的数据信息。

我们今天就来尝试学习测试云雨图的画法。

绘制云雨图,需要用到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()

上一篇下一篇

猜你喜欢

热点阅读