可変数の引数からプロットを生成しようとしています。コードは正常に動作し、意図したプロットが生成されます。ただし、labels関数(fill = labels [i])は意図したとおりに機能しません。私はここで間違ったことを理解できません。すべてのラインは同じラベル「C 3」を有し、したがって同じ色を有する。ループを使用してggplot2にstat_functionプロットを追加する際に誤ったlablesを表示
library(ggplot2)
F.Linear <- function(A, a, b, c) {
C <- (c - a*A)/b
C[C < 0] <- NA
return(C)
}
plot.linear.equations <- function(X, ...){
p <- ggplot(data.frame(x = X), aes(x = x))
arguments <- list(...)
mycolors <- c("red", "blue", "green", "orange")
labels <- c("C 1", "C 2", "C 3", "C 4")
for(i in 1:length(arguments)){
C <- unlist(arguments[i])
p <- p + stat_function(fun=F.Linear, args = list(a=C[1], b=C[2], c=C[3]), geom="area", colour="black", alpha=0.2, aes(fill = labels[i]))
}
p <- p + scale_x_continuous(name = "A") +
scale_y_continuous(name = "C") +
scale_fill_manual("Constraints", values = c("red", "blue", "green", "orange"))
return(p)
}
C1 <- c(12, 6, 20400)
C2 <- c(9, 15, 25200)
C3 <- c(6, 6, 12000)
plot.linear.equations(c(0, 3000), C1, C2, C3)
[ggplot2:ループ内の行を追加し、カラーマッピングを保持する]の可能な重複(https://stackoverflow.com/questions/32698616/ggplot2-adding-lines-in-a-ループと保持の色マッピング) – aosmith
問題は同じように見えますが、リンクされた質問(データに変数を追加するためにcbindを使用)でトリックを使用することはできませんでした。まだ解明しようとしている。 – max
いいえ、これは私の正確なコードです。私はX $ labels =ラベル[1]を使っていませんでした。リンクされた例では、データ列を使用しましたが、stat_functionにはデータ列はありません。まだ解明しようとしている。ループの代わりに全体を書くと、うまくいきます。しかし、私はループがうまくいかない理由を理解したい。 – max