これは、3 つの関数に関して定義されたパレットがある場合、またはパレット値を保持するデータ ファイルがある場合に可能です。
グレー範囲からマッピングして拡大/縮小するマッピング関数map(x)
(つまり、自己定義関数) があるとします。[0:1] -> [0:1]
次に、次を使用できます。
red(x) = ...
green(x) = ...
blue(x) = ...
map(x) = ...
set palette functions red(map(gray)), green(map(gray)), blue(map(gray))
それに応じて、ファイルの場合:
map(x) = ...
set palette file 'palette.dat' using (map($1)):2:3:4
あなたの場合、次のことができます:
- 必要に応じてパレットを定義します (例:
set palette defined ...
)
- パレットを外部データ ファイルに書き込みます。これにより、「赤」、「緑」、「青」、および NTSC グレー値用に 1 つのデータ セットが書き込まれます。
に役立つようにデータ ファイルを再配置しますset palette file
。ここでは、次の python スクリプトを使用しますpalette.py
。
import numpy as np
import sys
A = np.loadtxt(sys.stdin, usecols=(0,1))
np.savetxt(sys.stdout, A.reshape(256,8, order='F')[:,(0,4,5,6,7)], fmt='%.3f')
適切な関数を定義しmap(x)
ます。
スクリプトは次のとおりです。
# 1.
set palette defined (1 "#B0E2FF", 2 "#87CEFA", 3 "#7EC0EE", 4 "#4F94CD", 5 "#4E78A0", 6 "#104E8B", 7 "#1B3F8B", 8 "#162252")
# 2.
set terminal push
set terminal unknown
set table 'palette.tmp'
test palette
unset table
set terminal pop
# 3.
system('python palette.py < palette.tmp > palette.dat')
# 4.
map(x) = (-0.5+(2*(x-0.5))**3 + x)/3 + 0.5
set palette file 'palette.dat' using (map($1)):2:3:4
test palette