更新: 無関係なプリアンブルを削除し、進行状況を更新しました。
こんにちは、ヒート マップのような水平バーを作成しようとしています。このバーは、以下の値に基づいて色が変わります。バーはデフォルトで赤ですが、2 つのパラメーターの値に応じて色が変わります。
SO で同様の効果を試みているページをいくつか見つけました:色のしきい値とグリッドを使用した R マトリックス プロット
2 つ以上のカラー パレットを混合して、組み合わせた色の値を表示する方法
したがって、これを行う最善の方法は、一連のタイルを水平にプロットすることであり、それぞれに 2 つの値に基づいて計算された色があると考えています。
私がなんとかしたことは、私が望む色を生成することです。これを行うには、行列 [2xn] を取得します。ここで、n はタイルの数です。行 1 には各タイルの値 1 が含まれ、行 2 には各タイルの値 2 が含まれます。
colourmatrix[,c(1:5)]
[,1] [,2] [,3] [,4] [,5]
"81" "82" "82" "82" "82"
"58" "58" "58" "58" "58"
次に、以下をすべての列に適用して、各タイルの色を生成しました。
col.deter <- function(invalues) {
cols <- rgb(green=invalues[1], red=100, blue=invalues[2], maxColorValue=100)
return(cols)
}
cols <- unlist(lapply(1:ncol(colourmatrix), function(i) col.deter(colourmatrix[,i])))
次に、 rbind() を実行します。結果は次のとおりです。
> colourmatrix[,c(1:5)]
[,1] [,2] [,3] [,4] [,5]
"81" "82" "82" "82" "82"
"58" "58" "58" "58" "58"
cols "#FFCF94" "#FFD194" "#FFD194" "#FFD194" "#FFD194"
したがって、各タイルについて、値 1 が高いほど緑がミックスに追加され、値 2 が高いほど青がミックスに追加されます。したがって、すべてのタイルの色が決定され、3 行目に追加されます。
私が今やりたいことは、このページで生成されたグリッドのようなもので、次のコードの回答に ggplot2 があります:
dat <- expand.grid(blue=seq(0, 100, by=10), red=seq(0, 100, by=10))
dat <- within(dat, mix <- rgb(green=0, red=red, blue=blue, maxColorValue=100))
library(ggplot2)
ggplot(dat, aes(x=red, y=blue)) +
geom_tile(aes(fill=mix), color="white") +
scale_fill_identity()
しかし、1行だけを想像してください。左から右に 1 行のタイルを作成しようとしています。その色は、生成された値によって決まります。
私はggplot2とimage()でこれをやろうとしましたが、私の試みは横ばいになり、通常はggplot 2を使用しません.aesと私が得るすべてのエラーを理解していませんが、それが慣れていたので試しました.上記のコード チャンクによって生成された赤と青のタイル プロットを生成します。
私の失敗した試み:
ggplot(c(1,ncol(colourmatrix)), 1, aes(x=x, y=y)) +
geom_tile(aes(fill=colourmatrix[3,]), color="white") +
scale_fill_identity()
Error in ggplot.data.frame(fortify(data, ...), mapping) :
Mapping should be created with aes or aes_string
qplot(c(1,ncol(colourmatrix)), c(1,ncol(colourmatrix)), fill=colourmatrix[3,], geom='tile')
Error: Aesthetics must either be length one, or the same length as the dataProblems:c(1, ncol(colourmatrix)), c(1, ncol(colourmatrix))
これを達成するために読んだ image() ページを試して失敗した試みもいくつかあります。
2 つ以上のカラー パレットを混合して、組み合わせた色の値を表示する方法
色のしきい値とグリッドを使用した R マトリックス プロット
ありがとう、
ベン W.