根据aes-setting,facet_wrap无法正常工作

时间:2013-12-04 11:15:56

标签: r ggplot2 facet-wrap

我有以下数据框:

test <- data.frame(x=c(1:8), y=c(8:1), Type=c("A","A","A","A","B","B","B","B"), Condition=c("aa","bb","cc","dd"))

  x y Type Condition
1 1 8    A        aa
2 2 7    A        bb
3 3 6    A        cc
4 4 5    A        dd
5 5 4    B        aa
6 6 3    B        bb
7 7 2    B        cc
8 8 1    B        dd

当我运行以下命令时,我可以得到像“test1”这样的正确图形。

q <- ggplot(test, aes(x, y, color=Type)) + geom_point(size=10) + labs(title = "test1")
q <- q + facet_wrap("Condition")
q

test1:test1

但实际上我想运行以下命令,因为我分析的数据集的名称有时会有所不同。

q <- ggplot(test, aes(test[,1], test[,2], color=Type)) + geom_point(size=10) + labs(title = "test2")
q <- q + facet_wrap("Condition")
q

但是输出错误就像“test2”: test2

有人可以告诉我一个解决方案吗? 谢谢你的帮助!


编辑 通过使用像这样的aes_string()解决了这个问题。

p <- ggplot(test, aes_string(x = colnames(test)[1], y = colnames(test)[2], color="Type")) + geom_point(size=10)
p <- p + facet_wrap("Condition")
p

谢谢大家!

1 个答案:

答案 0 :(得分:3)

ggplot不喜欢aes内的列索引。使用aes_string()代替索引列名:

ggplot(data=test,
       mapping=aes_string(x=names(test)[1], y=names(test)[2], color="Type")) + 
       geom_point(size=10) +
       facet_wrap(~ Condition)