我想用一个二元结果变量(0或1)绘制多个连续变量(约20个变量)的绘图(箱线图)。
数据:
ID outcome var1 var2 var3 var4 var5
1 0 62 2.01 13 1.94 8
2 0 150 4.32 9 99 6
3 0 18 1.86 0.6 99 22
4 0 60 4.08 3 -99 6
5 1 20 1.96 1 99 14
6 1 100 1.64 19 -99 3
我的代码:
tmp <- melt(data, id.vars=c("ID", "outcome"))
p <- ggplot(data = tmp, aes(x=outcome, y= value)) +
geom_boxplot(aes(fill=Label))
p + facet_wrap( ~ variable, scales="free")
此代码显示以下错误:
layout_base中的错误(data,vars,drop = drop):至少一个图层必须包含用于构面的所有变量
非常感谢任何帮助。
答案 0 :(得分:0)
这里有几个问题。
1)您没有名为Label
的变量。
2)outcome
是一个连续变量。
删除Label
并使outcome
成为一个因素,代码可以正常运行
ggplot(data = tmp, aes(x=as.factor(outcome), y= value)) +
geom_boxplot() +
facet_wrap( ~ variable, scales="free")
数据:
tmp <- structure(list(ID = c(1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L,
5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L,
3L, 4L, 5L, 6L), outcome = c(0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L,
0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L, 0L, 1L, 1L), variable = structure(c(1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L,
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L), .Label = c("var1", "var2",
"var3", "var4", "var5"), class = "factor"), value = c(62, 150,
18, 60, 20, 100, 2.01, 4.32, 1.86, 4.08, 1.96, 1.64, 13, 9, 0.6,
3, 1, 19, 1.94, 99, 99, -99, 99, -99, 8, 6, 22, 6, 14, 3)), row.names = c(NA,
-30L), .Names = c("ID", "outcome", "variable", "value"), class = "data.frame")