具有不同可变长度列 b/w 两个数据框的箱线图
Box plot with different variable length columns b/w two data frames
我有两个数据框。它们的长度不同。
df1:
Samples Number
A9GS 73
A9GY 142
ASNO 327
A5UE 131
df2:
Samples Number
AUFS 107
A9JY 42
AKNO 32
A9FE 111
A9GY 12
ADNO 37
A2KE 451
我已经对此进行了 wilcoxon 测试。
wilcox.test(df1$Number,df2$Number, correct=FALSE)
这给了我 p 值。为了形象化这一点,我使用了箱形图函数并给出了如下错误。
boxplot(df1$Number ~ df2$Number, xlim=c(0.5,3))
Error in model.frame.default(formula = df1$Number ~ df2$Number) :
variable lengths differ (found for 'df2$Number')
任何人都可以纠正我的错误并告诉我如何在图上获得 p 值。谢谢
只有当这些数据框与数据框存在 1-1 配对时(RHS 通常是组变量而不是数字变量),您才能使用该公式,但显然没有。您需要使用列表传递系统而不是公式一个。我会看看我是否可以构建一个工作示例。
情节是通过以下方式实现的:
png(); boxplot( list(df1_N=df1$Number, df2_N = df2$Number) ); dev.off()
并且可以使用 text
函数完成注释,该函数接受通常由 bquote
.
构造的 ?plotmath
参数
text( 1.5, 400,
label=bquote(
p~value == .(wilcox.test(df1$Number,df2$Number, correct=FALSE)$p.value)
) )
如果您想对 p 值进行舍入,请在 .( )
-函数
中围绕表达式使用 round( ... )
只需将两个数据框放在一起,然后将 p 值粘贴到图上即可:
df1 <- data.frame(samples = c('A9GS', 'A9GY', 'ASNO', 'ASUE'),
number = c(73, 142, 327, 131))
df2 <- data.frame(samples=c('AUFS', 'A9JY', 'AKNO', 'A9FE', 'A9GY', 'ADNO',
'A2KE'),
number = c(107, 42, 32, 111, 12, 37, 451))
df1$group <- 'df1'
df2$group <- 'df2'
df <- rbind(df1, df2)
m<-wilcox.test(df1$number,df2$number, correct=FALSE)
library(ggplot2)
jpeg('path/to/where/you/want/the/file/saved/picture.jpeg')
ggplot(df, aes(x=group, y=number, group=group)) +
geom_boxplot() +
annotate('text', label=paste('p =', round(m$p.value, 2)), x=.5, y=400)
dev.off()
产量:
我有两个数据框。它们的长度不同。
df1:
Samples Number
A9GS 73
A9GY 142
ASNO 327
A5UE 131
df2:
Samples Number
AUFS 107
A9JY 42
AKNO 32
A9FE 111
A9GY 12
ADNO 37
A2KE 451
我已经对此进行了 wilcoxon 测试。
wilcox.test(df1$Number,df2$Number, correct=FALSE)
这给了我 p 值。为了形象化这一点,我使用了箱形图函数并给出了如下错误。
boxplot(df1$Number ~ df2$Number, xlim=c(0.5,3))
Error in model.frame.default(formula = df1$Number ~ df2$Number) :
variable lengths differ (found for 'df2$Number')
任何人都可以纠正我的错误并告诉我如何在图上获得 p 值。谢谢
只有当这些数据框与数据框存在 1-1 配对时(RHS 通常是组变量而不是数字变量),您才能使用该公式,但显然没有。您需要使用列表传递系统而不是公式一个。我会看看我是否可以构建一个工作示例。
情节是通过以下方式实现的:
png(); boxplot( list(df1_N=df1$Number, df2_N = df2$Number) ); dev.off()
并且可以使用 text
函数完成注释,该函数接受通常由 bquote
.
?plotmath
参数
text( 1.5, 400,
label=bquote(
p~value == .(wilcox.test(df1$Number,df2$Number, correct=FALSE)$p.value)
) )
如果您想对 p 值进行舍入,请在 .( )
-函数
round( ... )
只需将两个数据框放在一起,然后将 p 值粘贴到图上即可:
df1 <- data.frame(samples = c('A9GS', 'A9GY', 'ASNO', 'ASUE'),
number = c(73, 142, 327, 131))
df2 <- data.frame(samples=c('AUFS', 'A9JY', 'AKNO', 'A9FE', 'A9GY', 'ADNO',
'A2KE'),
number = c(107, 42, 32, 111, 12, 37, 451))
df1$group <- 'df1'
df2$group <- 'df2'
df <- rbind(df1, df2)
m<-wilcox.test(df1$number,df2$number, correct=FALSE)
library(ggplot2)
jpeg('path/to/where/you/want/the/file/saved/picture.jpeg')
ggplot(df, aes(x=group, y=number, group=group)) +
geom_boxplot() +
annotate('text', label=paste('p =', round(m$p.value, 2)), x=.5, y=400)
dev.off()
产量: