我想将数据矩阵的多列与一列进行绘图,因此我使用循环而不是单独绘制每个列。问题在于,如果我要使用循环,要绘制的列名和颜色必须是可变的。我尝试了以下方法:
但是当我运行这个程序时,出现了以下错误:
如何将颜色(或任何其他值)作为变量传递到aes_string中?谢谢您的帮助。
测试数据可在此处获得: 链接。
allDs <- sort(unique(plotdata$D))
p <- ggplot(plotdata, aes(SpaceWidth))
for (thisD in allDs) {
tlColName <- paste("M2D", thisD, "Tl", sep="")
colorName <- paste("D", thisD, sep="")
p <- p + geom_line(data = plotdata[!is.na(plotdata[[tlColName]]),], aes_string(y = tlColName, color = colorName))
}
p <- p + scale_colour_manual("Legend", values = c("D2" = "blue", "D3" = "red", "D4" = "green", "D6" = "violet", "D7" = "yellow" ))
p <- p + scale_x_log10(breaks = composite$SpaceWidth)
p <- p + facet_wrap(~ Drawn, ncol = 3)
p <- p + labs(title = "Fu plot", y = "MTN")
p
但是当我运行这个程序时,出现了以下错误:
Error in eval(expr, envir, enclos) : object 'D2' not found
如何将颜色(或任何其他值)作为变量传递到aes_string中?谢谢您的帮助。
测试数据可在此处获得: 链接。
dput(head(plotData,100))
命令,并将控制台输出粘贴到你的问题中。 - Tommy O'Dellplotdata
数据框中实际上不存在D2
列。话虽如此,很可能有另一种(更好的)方法来实现你所要求的,而不需要使用 for 循环。 - Tommy O'Dell