[英]Violin plot of a data frame
我有一个data.frame
,例如:
df = data.frame(AAA=rnorm(100,1,1),BBB=rnorm(100,2,1.5),CCC=rnorm(100,1.5,1.2))
并且我想把它的每一根柱子 plot 放在一个联合小提琴 plot 中。
这是我目前所处的位置:
names(df)[1] = 'x'
do.call('vioplot', c(df,col="red",drawRect=FALSE))
我接下来要做的是 plot df
的 colnames 作为 x 轴标签,而不是vioplot
的默认 x 轴标签,此外它们不会相互重叠。 我想这可以通过在 plot 中扩展df
的列或倾斜 x 轴标签来实现。 但我无法弄清楚。
可能更容易使用ggplot
df = data.frame(AAA=rnorm(100,1,1),
BBB=rnorm(100,2,1.5),
CCC=rnorm(100,1.5,1.2))
需要将数据转换为ggplot可以处理的内容:
df.m <- reshape2::melt(df, id.vars = NULL)
和情节:
library(ggplot2)
ggplot(df.m, aes(x = variable, y = value)) + geom_violin()
我最喜欢ggplot
解决方案,但是这是你用do.call
做的方法:
do.call(vioplot,c(unname(df),col='red',drawRect=FALSE,names=list(names(df))))
值得注意的是,您不必进行names(df)[1] = 'x'
因为您使用unname
删除了名称。
您是否尝试删除do.call
调用并单独执行它们。
vioplot(df[,"AAA"], df[,"BBB"], df[,"CCC"],
col = "red", drawRect = FALSE,names = names(df))
另一个简单的选择是使用来自 ggpubr 的ggviolin
function具有长格式数据,如下所示:
df = data.frame(AAA=rnorm(100,1,1),BBB=rnorm(100,2,1.5),CCC=rnorm(100,1.5,1.2))
library(dplyr)
library(tidyr)
library(ggpubr)
df %>%
pivot_longer(cols = everything()) %>%
ggviolin(x = "name",
y = "value")
由代表 package (v2.0.1) 于 2022 年 8 月 14 日创建
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.