2014-09-22 118 views
2

有些什麼關係previous questiongnuplot的調色板,默認和定義

我想借默認(pm3d默認)的gnuplot調色板和X放置白色值,有什麼> = X爲白色,但其餘(< X)仍然按照默認值分配。

比方說我有值0和100之間,我只關心值0到30,所以我做到以下幾點:

set cbrange [0:30] 

現在的值是均勻0到30之間分佈着默認的顏色調色板,但值30.001到100都是黃色的。我想我的調色板的頂部放置一個白色塊,說彩條上這樣的事情

0:30均勻地默認調色板 30:31白色

,並在實際的情節分發,其值> = 30爲白色。

我知道我可以設置定義的值,但我似乎無法結合默認rgbformula 7,5,15和30 =白定義點。

有什麼想法?

回答

3

您可以用set palette functions定義您自己的基於功能的調色板。打字show palette rgbformulae顯示您所使用的默認調色板中的功能(7,5,15)的定義:

gnuplot> show palette rgbformulae 
     * there are 37 available rgb color mapping formulae: 
     0: 0    1: 0.5    2: 1    
     3: x    4: x^2    5: x^3    
     6: x^4    7: sqrt(x)   8: sqrt(sqrt(x)) 
     9: sin(90x)  10: cos(90x)  11: |x-0.5|   
     12: (2x-1)^2  13: sin(180x)  14: |cos(180x)|  
     15: sin(360x)  16: cos(360x)  17: |sin(360x)| 
     ... 

所以,你可以定義自己的函數爲紅色,綠色和藍色這在調色板的一端給白:

r(x) = sqrt(x) 
g(x) = x**3 
b(x) = (x == 1 ? 1 : sin(2*pi*x)) 
set palette functions r(gray),g(gray),b(gray) 

出於演示,這裏是一個完整的示例腳本,其中高於-10所有值均爲白色:

r(x) = sqrt(x) 
g(x) = x**3 
b(x) = (x == 1 ? 1 : sin(2*pi*x)) 
set palette functions r(gray),g(gray),b(gray) 
set isosamples 100 
set pm3d map 
set cbrange [-200:-10] 
set cbtics -200,40 
set cbtics add ('> -10' -10) 
splot -x**2 - y**2 notitle 

與4.6.5輸出是:

enter image description here

+0

很好。一些我不明白的地方。如果從文件加載,爲什麼要傳遞'gray'而不是值,比如'r(灰色$ 1)'?另外,在'b(x)'1中,'cbrange'的最大值是否正確?例如,我希望可以將其設置爲值「X」,然後將實際的色彩圖繪製爲「X + 10」,以便在色彩條頂部有一個實際的白色塊。 – James 2014-09-24 00:24:12

+0

例如,我希望有一個彩條可以繪製像[這個](http://imgur.com/F4giDLf) – James 2014-09-24 00:31:28

+0

好吧,我已經得到它:取代所有有三元。 (x)=(x> = 0.9?1:sqrt(x))','g(x)=(x> = 0.9?1:x ** 3) x> = 0.9?1:sin(2 * pi * x))'。感謝您的幫助 – James 2014-09-24 02:50:11