データ行列の複数の列を1つの列に対してプロットしたいので、各列を個別にプロットするのではなく、ループを使用しています。問題は、ループを使用する場合、プロットする列名と色を可変にする必要があることです。変数を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
しかし、私はこれを実行すると、私は次のエラーを取得する:私は、次のことを試してみました
色(または他の値)がaes_stringに変数として渡すことができますどのようにError in eval(expr, envir, enclos) : object 'D2' not found
?前もって感謝します。
データはhereです。
データのサンプルも提供できますか? 'dput(head(plotData、100))'を使って試してみて、その出力をあなたの質問に貼り付けてください。 –
FYI - エラーは、 'D2'列が実際に' plotdata'データフレームに存在しないことを意味します。つまり、forループを使用せずに、求めているものを達成する別の(より良い)方法がありそうです。 –
しかし問題は私が渡している "色"の値であるようです。 aes_stringから色を削除すると、プロットが機能します。とにかく、これをより良く、適切な方法で行う方法を私に教えることができれば、非常に役に立ちます。 – Dronacharya