2017-02-02 2 views
2

Iは、各要素には、以下ののgnuplotコードスニペット(3*3のRGBマトリックス)のように、三重rgbあり、m*n行列をプロットする:赤い背景にrgbイメージで行列をプロットする方法は?

$cross << EODcross 
255 0 0 0 0 0 255 0 0 
0 0 0 0 0 0 0 0 0 
255 0 0 0 0 0 255 0 0 
EODcross 

ブラッククロス。必要に応じて、列と色要素の区切り文字を変更できます。

$crossのデータを使用して、希望の回避を達成することはできますか?set palette rgbformulae i,j,kような何か:

plot '$cross' matrix with image rgb 

ない場合、私は(すなわち、事前に計算し、r + 256 * (g + 256 * b)またはb + 256 * (g + 256 * r)値をテキストに変換、テキスト表現で、もちろん)24ビット幅の整数を渡すことができます。 i,j,kトリプルは、上記のフォームで表現された値rgbをパレットの色空間に正しくマップする方法はありますか?

答えて

2

、最後の3つの範囲内の、赤、青、緑値を与えます。プロットするときに、カラーチャンネルを自分で抽出する必要がありますので、それで、あなたは、色の任意の24ビット整数表現を使用することができます。

$data <<EOD 
0xff 0 0xff00 
0  0 0 
0xffff 0 0xff00ff 
EOD 
r(x) = int(x) >> 16 
g(x) = (int(x) >> 8) & 0xff 
b(x) = int(x) & 0xff 
plot $data matrix using 1:2:(r($3)):(g($3)):(b($3)) with rgbimage 

enter image description here

+0

最初の二つの意味は何? – Orient

+1

1と2はx座標とy座標です。 'matrix'を使用すると、gnuplotは内部的に3つのカラムを生成します:最初は行列の列、2番目は行列の行、3番目の列は実際の行列データ値 – Christoph

1

アスキーマトリックスデータとrgbimageが一緒に収まらないようです。

あなたは、入力データをフォーマットして自由である場合、このような2行の空白行でブロックを分離し、単一のブロックへの画像の各列を入れては:

$cross << EODcross 
255 0 0 
    0 0 0 
255 0 0 


0 0 0  
0 0 0  
0 0 0 


255 0 0 
    0 0 0 
255 0 0 
EODcross 

次に、このようなクロスをプロットします。

plot $cross using -2:0:1:2:3 with rgbimage 

番号-2とusingセクション0は、それぞれ、擬似列「ブロック指数」と「ブロック内のライン」に相当します。それらはxとyの値として使用されます。 plot with rgbimageスタイルにはx,y,r,g,bデータが必要です。

この結果である:[255 0] rgbimage描画スタイルは、5つの列を期待

black cross

関連する問題