0

更新: 無関係なプリアンブルを削除し、進行状況を更新しました。

こんにちは、ヒート マップのような水平バーを作成しようとしています。このバーは、以下の値に基づいて色が変わります。バーはデフォルトで赤ですが、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.

4

1 に答える 1

0

このようなもの(または特定のウィンドウ位置での全体的な類似性が正規化されているバージョン)はどうですか? R-ggplot2、いくつかの質問、複数の相関プロット

編集:これは1つの文字列に対してのみです(つまり、A、B、Cのそれぞれに対して1つ作成します)。

于 2013-03-05T19:03:20.893 に答える