2014-01-17 104 views
0

我想繪製寫在stp199inf2.dat中的離散數據,在z = 0的橫截面上繪製函數c1和c2。 我現在真的需要幫助。如何在Gnuplot中繪製3D圖形橫截面上的離散數據


set multiplot 

c1(x,y) = x**2 + y**2 -1 - 0.1*cos(16*atan(x/y)) 
c2(x,y) = (x-0.5)**2 + (y-0.5)**2 -0.5 

C=0.7 
set xrange[0:1.2] 
set yrange[0:1.2] 

set tics font"Times New Roman,12" 
set xlabel "f1" 
set ylabel "f2" 
set xlabel font "Times New Roman, 12" 
set ylabel font "Times New Roman, 12" 
set key font "Times New Roman, 12" 
set key right top 

set isosamples 300,300 
set contour base 
set cntrparam levels discrete 0.0 
set nosurface 
set size square 
set view 0,0, 

splot c1(x,y) lt -1 lw 1 title "" 
splot c2(x,y) lt -1 lw 1 title "" 
splot c1(x,y) lt 3 lw 2.5 title "True Pareto Front" 

splot './gnuplot_plot/stp199inf2.dat' lt 4 ps 3 pt 7 

pause -1 

------------------- stp199inf2.dat ------------------ ----

1.037663 0.042694 0.0 
0.071479 1.018838 0.0 
0.871717 0.475405 0.0 
0.909571 0.456881 0.0 
0.996505 0.096337 0.0 

+0

你的問題到底是什麼?你能解釋一下你從代碼中得到的結果,以及它與你期望的結果有什麼不同嗎?也許你可以在某處上傳一個數字並在這裏分享鏈接? – Schorsch

回答

0

隨着unset surface還有點不繪製。所以你必須在繪製點之前設置曲面。

其他一些言論,您的代碼:

  1. 如果你有一個情節一切,你應該使用逗號分隔的電話單splot命令。
  2. 在這種情況下,您必須使用選項nosurface取消前三個曲線的曲面。
  3. 您必須使用選項nocontour取消點圖的輪廓。
  4. 如果您使用set view map而不是set view 0,0,則不會繪製重疊的zticlabels。

因此,合理的腳本可能看起來像:

set termoption font"Times New Roman,12" 
set multiplot 

c1(x,y) = x**2 + y**2 -1 - 0.1*cos(16*atan(x/y)) 
c2(x,y) = (x-0.5)**2 + (y-0.5)**2 -0.5 

C=0.7 
set xrange[0:1.2] 
set yrange[0:1.2] 

set xlabel "f1" 
set ylabel "f2" 
set key outside 

set isosamples 300,300 
set contour base 
set cntrparam levels discrete 0.0 
set size square 
set view map 

splot c1(x,y) lt -1 lw 1 title "" nosurface,\ 
     c2(x,y) lt -1 lw 1 title "" nosurface,\ 
     c1(x,y) lt 3 lw 2.5 title "True Pareto Front" nosurface,\ 
     'stp199inf2.dat' lt 4 ps 3 pt 7 nocontour title "" 

unset multiplot 

與4.6.3輸出是:

enter image description here

我不知道,如何以最佳方式處理輪廓鍵條目。當我找到某些東西時我會更新答案。