現在、特定のプロットを作成する関数を作成中です。プロットはグループ固有の相対平均偏差(それぞれのエフェクトサイズ)を壮大なサンプル平均と比較し、グループごとの全体平均偏差を水平線として示します。私は既にプロット内のグループのために異なる色を得る方法を研究しましたが、グループ固有の色で色を付けることはできません。ここでカットオフラインに因子別の色を追加するR
は、いくつかの例のデータです:
a <- c(runif(10))
names(a) <- c(paste0("v", 1:10))
b <- c(runif(10))
names(b) <- c(paste0("v", 1:10))
c <- c(runif(10))
names(c) <- c(paste0("v", 1:10))
dev_list <- list(a,b,c)
names(dev_list) <- c("group1", "group2", "group3")
まず、私はデータを溶かす:
require(reshape2)
df_aux <- data.frame(matrix(unlist(dev_list), nrow=length(dev_list), byrow=T), class = c(names(dev_list)))
colnames(df_aux) <- c(c(paste0("v", 1:10)), "class")
df_melt <- melt(df_aux)
私は、カットラインのためのデータフレームを作成します。
ml_list <- mapply(function(A, B) {
list(data.frame(x = c(-Inf, Inf), y = mean(A), cutoff = factor(paste(B, "Mean Deviation", sep = " "))))
}, dev_list, c(names(dev_list)))
それから私プロットデータ:
require(ggplot2)
p <- ggplot(df_melt, aes(variable, value)) + geom_point(aes(colour = class))
これまでのところ、行を挿入するときに、行の色を定義するためのクラス変数を再度参照する方法がわかりません。私のコードは、これまで:
p <- p + lapply(ml_list, function(z) {geom_line(aes(x,y, linetype = cutoff), z)})
プロットp
は、その後、次のようになります
Link to the plot as apparently I cannot include it in the post yet
私はすでにgeom_lineのAES内の同じcolour = class
を入れて試してみたが、それはしませんでした作業。私はまた、How to assign colors to categorical variables in ggplot2 that have stable mapping?で説明されているいくつかのテクニックを使用しようとしましたが、どちらも動作できませんでした。
私の最後のコード行がプロットと同じ方法でクラス変数の色を使用するように、誰でも正しい色指定を教えてもらえますか?
ありがとうございます!
編集:これ以外の誰かがこれを必要とする場合:Brandonsソリューションを使用するには、上記のml_list
に色定義変数を含める必要があります。
新しいコード行:
ml_list <- mapply(function(A, B) {
list(data.frame(x = c(-Inf, Inf), y = mean(A), cutoff = factor(paste(B, "Mean Deviation", sep = " ")), class = factor(paste0(B))))
}, dev_list, c(names(dev_list)))
これは完全に機能します。どうもありがとう! – LAP
私はそれが私の問題を解決しないことに気づいたので、これを再度開く必要があります。線の色は、対応する点の色に適合しません。 – LAP
'scale_color_discrete(value = c(" my "、" list "、" of "、" colors "))に色を追加する' –