2014-01-07 124 views
4

我遵循示例here使用gnuplot生成填充等高線圖。的gnuplot的命令和輸出是:等高線之間的顏色不變的填充輪廓圖

reset 
f(x,y)=sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x) 
set xrange [-5:5] 
set yrange [-5:5] 
set isosample 250, 250 
set table 'test.dat' 
splot f(x,y) 
unset table 

set contour base 
set cntrparam level incremental -3, 0.5, 3 
unset surface 
set table 'cont.dat' 
splot f(x,y) 
unset table 

reset 
set xrange [-5:5] 
set yrange [-5:5] 
unset key 
set palette rgbformulae 33,13,10 
p 'test.dat' with image, 'cont.dat' w l lt -1 lw 1.5 

Filled contour plot generated using gnuplot.

此方法生成非常平滑的填充等高線圖。如何修改此方法以使輪廓線之間的顏色保持不變?例如,我想爲它類似於此MATLAB腳本的輸出:

clc; clear all; close all; 

Nx = 250; 
Ny = 250; 
x = linspace(-5,5,Nx); 
y = linspace(-5,5,Ny); 
[X,Y] = meshgrid(x,y); 

f = sin(1.3*X).*cos(.9*Y) + cos(.8*X).*sin(1.9*Y) + cos(Y.*.2.*X); 

levels = -3:0.5:3; 
figure; 
contourf(X,Y,f,levels); 
colorbar; 

Filled contour plot generated using MATLAB.

回答

5

gnuplotset palette選項需要maxcolors設置。因此,對於你的情況,因爲你有12行,你應該添加

set palette maxcolors 12 
+0

好的解決方案!您只需要增加表面的採樣數量,因爲填充後的輪廓不會被視爲封閉的多邊形,而是被拼接在一起。 – Christoph

+0

@Christoph是的,但你也有這個問題沒有默認的maxcolors設置,雖然不太明顯。 – Bernhard