2017-02-24 7 views
1

には2つのデータファイルがあり、pm3dマップを使用してカラーマップを重ねる必要があります。私は実際に2つのプロットを重ねることができるように、最も低い値に透明度を割り当てる必要があります。pm3dマップ

まずデータファイルdata1.datは含まれています

1 1 1 1 1 
1 1 1 1 1 
1 1 1 30 1 
1 45 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 

第二のデータファイルdata2.datは次のとおりです。私は置くとき

set terminal png 
set output 'data_plot.png' 
set pm3d map 

set multiplot 

stats "data1.dat" matrix name "A" 
show variables A_ 
stats "data2.dat" matrix name "B" 
show variables B_ 

splot for[i=0:4] 'data1.dat' matrix using (column(i)==A_min ? NaN :column(i)/A_max), for[i=0:4] 'data2.dat' matrix using (column(i)==B_min ? NaN :column(i)/B_max) 

:ここ

1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 1 1 
1 1 1 80 1 
1 1 1 20 1 

は、私はgnuplotのファイルで試したものです条件column(i)==A_min、列nをチェックしていますumber(明らかに)はA_minになります。代わりに要素の値をチェックする方法があります(要素にアクセスする)? すべての要素に透明な値 "1"を割り当てる必要があります。

答えて

1

おそらくNaN値のためにpm3dを動作させることができませんでした。代わりにrgbalphahelp rgbalpha)を使用することはできますか? X、Y、R、G、B、アルファ:

set terminal pngcairo 
set output 'data_plot.png' 

stats "data1.dat" matrix name "A" 
show variables A_ 
stats "data2.dat" matrix name "B" 
show variables B_ 

set nokey 

r(x) = 255*sqrt(x)     # rgbformulae 7 
g(x) = 255*x**3      # rgbformulae 5 
b(x) = 255*(0.5+0.5*sin(2.0*pi*x)) # rgbformulae 15 
a(x) = (x==1) ? 0 : 255    # fully transparent or opaque 

plot 'data1.dat' matrix using 1:2:(r($3/A_max)):(g($3/A_max)):(b($3/A_max)):(a($3)) with rgbalpha ,\ 
    'data2.dat' matrix using 1:2:(r($3/B_max)):(g($3/B_max)):(b($3/B_max)):(a($3)) with rgbalpha 

コマンドplot with rgbalphaは6列を期待します。これは、座標が必要であり、マトリックス値をカラー値にマップする必要があることを意味します。我々はhereからいくつかのアイデアを取る。引用comment from Christoph

行列を用いて、gnuplotは内部の3つの列を生成する:第1のマトリックスの列は第2の行列の行であり、第3は、実際のマトリクスのデータ値を含む、です。

色の計算には、デフォルトのマッピングが使用されます(help rgbformulaeshow palette rgbformulaeを読み込んだ後)。色値r、g、bは0〜255の間であると予想されます。各ファイルの最高値が黄色で表示されるように、マトリックス値がマッピングされます。透明度関数a(x)は引数1に対して0(完全に透明)を返し、そうでなければ255(不透明)を返します。

これが結果です:

two matrices with some transparency

注描画スタイル "rgbalpha" と "pm3dを" 異なった座標を扱うこと。これには、xrangeとyrangeの調整や、using 1:2:...using ($1+0.5):($2+0.5):...など)の必要があります。