1
votes

I'd like to plot 3D surface plot combined with heatmap plot of the same function (from file data) at the bottom (like in the chapter "Combining surfaces with images" in Gnuplot Cookbook).

The wanted picture looks like this and this.

Contour plot is plotted with the script.

Is it possible to draw two graphs (contour and 3D) in the polar coordinates in one plot via Gnuplot?

Output is nothing, so there is an error in the code:

reset
set terminal pngcairo size 800,800 enhanced font 'Verdana,20'
set output '3d-polar_AbsPsiSquared.png'

set lmargin at screen 0.05
set rmargin at screen 0.85
set bmargin at screen 0.1
set tmargin at screen 0.9

set pm3d
unset key
set multiplot

stats '_FullWV.dat' using ($3*$3+$4*$4)
max(a,b) = (a>b) ? a : b
round2(x) = x - floor(x) < 0.5 ? floor(x) : ceil(x)
round(x, n) = round2(x*10**n)*10.0**(-n)

Z_MAX = max(-STATS_min, STATS_max)
Z_MAX = round(Z_MAX,1)

set parametric
set grid xtics ytics
set angles degree

#set zrange[-1,1]
#set cbrange [-1:1]
set autoscale fix
#set autoscale xfix
#set autoscale yfix
set autoscale zfix
#set autoscale
set cbrange [-Z_MAX : Z_MAX]

set palette model RGB defined ( 0"#6495ED", 1"blue", 2"#00008B",3"white",\
     4"green",5"yellow",6"red")
#splot '_FullWV.dat' u ($2*cos($1)):($2*sin($1)):($3*$3+$4*$4)
set size ratio -1
set hidden front
set xyplane at -1
splot '_FullWV.dat' u (abs(($3*$3+$4*$4))<1e-3 ? NaN : $2*cos($1)):($2*sin($1)):($3*$3+$4*$4) with pm3d at b, '_FullWV.dat' u (abs(($3*$3+$4*$4))<1e-3 ? NaN : $2*cos($1)):($2*sin($1)):($3*$3+$4*$4) with pm3d

unset multiplot
1
What did you try?Eric Duminil
@EricDuminil: updated the question -- I've just tried to change the existing script in order to add the surface plot on it, but output is not produced (although Gnuplot doesn't show any error messages)Eugene Smit
Is it another _FullWV.dat file than for the other questions? There are only 3 columns, and you are referencing a 4th one with $4Eric Duminil
you are right, the new file is here. I saw some output with the Total Commander Viewer (and it is almost what I want), but other viewers don't show it, could be there some problems with margins?Eugene Smit
Do you have a smaller subset of the data?Eric Duminil

1 Answers

0
votes

Seems, the solution is depthorder option of pm3d, so the right script is:

reset
set terminal postscript eps size 5,6 enhanced color font 'Helvetica,20' linewidth 2
set output "3d.eps"

set tics scale 1.25

set xlabel '{/Helvetica-Oblique x, a.u.}'
set ylabel '{/Helvetica-Oblique y, a.u.}'
set zlabel '{/Helvetica-Oblique E, a.u.}'

set pm3d depthorder
unset key
set multiplot
unset colorbox

stats '_FullWV.dat' using ($3*$3+$4*$4)
max(a,b) = (a>b) ? a : b
round2(x) = x - floor(x) < 0.5 ? floor(x) : ceil(x)
round(x, n) = round2(x*10**n)*10.0**(-n)

Z_MAX = max(-STATS_min, STATS_max)
Z_MAX = round(Z_MAX,1)

set parametric
set grid xtics ytics ztics
set mxtics 2
set mytics 2
set tics out
set decimalsign ","

set format x "%.1f"
set format y "%.1f"
set format z "%.0f"

set angles degree
set view 61,33
set ztics floor(Z_MAX/3)


set autoscale fix
set autoscale zfix
set cbrange [0 : Z_MAX]



set palette model RGB defined ( 0"#168de2", 1"#0201db", 2"#00008B", 3"#00dcf5",\
         4"#09df67",5"yellow",6"red")
set size ratio 1
set hidden3d front
set xyplane at -10
splot '_FullWV.dat' u (abs(($3*$3+$4*$4))<1e-3 ? NaN : $2*cos($1)):($2*sin($1)):($3*$3+$4*$4) with pm3d at b, '_FullWV.dat' u (abs(($3*$3+$4*$4))<1e-3 ? NaN : $2*cos($1)):($2*sin($1)):($3*$3+$4*$4) with pm3d

unset multiplot