R可视化-小提琴图

一、简单小提琴图

小提琴图的作图数据同箱线图,X轴为定性变量,Y轴为定量变量,数据量足够大才有统计意义;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
library(ggplot2)
library(hrbrthemes)

name <- c(rep("A",300),rep("B",300),rep("C",100),rep("C",200),rep("D",300))
value <- c(rnorm(300,10,2),rnorm(300,15,4),rnorm(100,5,1),rnorm(200,12,1),rnorm(300,3,1))
data <- data.frame(name,value)

pviolin <- ggplot(data,aes(x=name,y=value,fill=name))+
geom_violin()+
geom_jitter(color="black", size=0.4, alpha=0.9)+
theme_ipsum()+
theme(legend.position="none")+
ggtitle("violin plot with jitter") +
xlab("")
pviolin

二、小提琴图优化

2.1 排序

1
2
3
4
5
6
7
8
9
10
# 如果要对X轴进行升序排列,使用reorder(x=x,y=y)函数;
# 若要降序排列,则使用reorder(x=x,y=-y)函数;
pviolin <- ggplot(data,aes(x=reorder(name,-value),y=value,fill=name))+
geom_violin()+
geom_jitter(color="black", size=0.4, alpha=0.9)+
theme_ipsum()+
theme(legend.position="none")+
ggtitle("violin plot with jitter") +
xlab("")
pviolin

2.2 调节Y轴限度,使用ylim()函数

1
2
3
4
5
6
7
8
9
10
ggsave(pviolin,filename="violin4.png",width=12,height=9)
pviolin <- ggplot(data,aes(x=reorder(name,-value),y=value,fill=name))+
geom_violin()+
geom_boxplot(width=0.1,color="grey",alpha=0.3)+
theme_ipsum()+
theme(legend.position="none")+
ggtitle("violin plot with jitter") +
xlab("")+
ylim(0,30)
pviolin

2.3 绘制水平小提琴图,加上coord_flip()函数

1
2
3
4
5
6
7
8
9
pviolin <- ggplot(data,aes(x=reorder(name,-value),y=value,fill=name))+
geom_violin()+
geom_jitter(color="black", size=0.4, alpha=0.9)+
theme_ipsum()+
theme(legend.position="none")+
ggtitle("violin plot with jitter") +
xlab("")+
coord_flip()
pviolin

2.4 同时绘制小提琴图与箱线图

1
2
3
4
5
6
7
8
9
pviolin <- ggplot(data,aes(x=reorder(name,-value),y=value,fill=name))+
geom_violin()+
geom_boxplot(width=0.1,color="grey",alpha=0.3)+
geom_jitter(color="black", size=0.4, alpha=0.9)+
theme_ipsum()+
theme(legend.position="none")+
ggtitle("violin plot with jitter") +
xlab("")
pviolin

  • 本文作者:括囊无誉
  • 本文链接: R/R_visualize_violin/
  • 版权声明: 本博客所有文章均为原创作品,转载请注明出处!
------ 本文结束 ------
坚持原创文章分享,您的支持将鼓励我继续创作!