Gnuplot: How to plot a 2d colorplot of a 3d function

Click For Summary
SUMMARY

This discussion focuses on generating a 2D color plot of a 3D function using Gnuplot, specifically addressing the handling of "Ignore" values in the dataset. The user initially faced issues with plotting due to the presence of extreme values (1e+300) produced by the function my_f(x, par). A solution was provided, utilizing the command splot dataf us 1:2:($3<1e299?$3:NaN) w pm3d to effectively filter out these values. The final Gnuplot script includes settings for terminal output, palette configuration, and data plotting, ensuring a clear representation of the function across the specified axes.

PREREQUISITES
  • Familiarity with Gnuplot version 5.0 or higher
  • Understanding of 3D data representation and color mapping
  • Basic knowledge of C++ for data generation
  • Experience with data filtering techniques in plotting
NEXT STEPS
  • Explore Gnuplot's pm3d plotting capabilities in detail
  • Learn about data preprocessing techniques in C++ for cleaner datasets
  • Investigate advanced Gnuplot palette configurations for better visualizations
  • Study the use of NaN in Gnuplot for handling invalid data points
USEFUL FOR

Data scientists, physicists, and engineers who need to visualize complex datasets in 2D and 3D using Gnuplot, particularly those dealing with filtering and color mapping of functions.

DerBaer
Messages
4
Reaction score
0
Hello,

I have a data file created by an C++ Programm which creates the lines of the data file by an operation inside an loop
Code:
data3dRnd << gsl_vector_get(x,0) << '    ' << gsl_vector_get(x,1) << '    ' << my_f(x,par) << endl << endl;

where the entries of the gsl_vector x are doubles and my_f(x,par) is a double depending on x.

I would like to produce a colour plot with x1 and x2 on the axes and show my_f(x,par) via the color of plot. There are some points x where my_f(x,par) produces an Ignore value (1e+300 in this case) and I don't want data points to be plotted which lead to my_f = Ignore value.
In a 2D plot of my_f over sqrt(x1^2+x2^2) I achieve this with
Code:
 using 1:($2 < 1e+300 ? $2 : 1/0)
How can I achieve this? At first there was only one << endl in my code, but that gave me the error that i need more then one Isoline. So I entered the second << endl as the Isolines are sperated by a blank line.

My current Gnuplot Scrit is

Code:
set terminal eps enhancedset output "VEffCont.eps"
set view map
set isosamples 100, 100
unset surface
set style data pm3d
set style function pm3d
set ticslevel 0
set title "Random v1 - v2 - Distribution"
set xlabel "v1 [GeV]"
set ylabel "v2 [GeV]"
set pm3d implicit at b
set palette cubehelix
splot "./3dRnd.dat" u 1:2:3 w pm3d

This produces a grid with the correct ranges of x and y axes and a colour scale for my_f but with nothing in the plot window as shown in the attached pdf.

Thanks in advance.
 

Attachments

Technology news on Phys.org
These commands:set pm3d explicit at b
set pm3d scansautomatic
set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean
set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB
set palette rgbformulae 7, 5, 15
set colorbox default
set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault
set loadpath
set fontpath
set fit noerrorvariables
GNUTERM = "wxt"
set title "29aprd1 Spectrogram"
se zra [-5:5]
splot "29aprd1.tfm" using ($3+ 0.01):1:(log10($2))
set out "29aprd1tfm.png"
set term png transparent truecolor enhanced
rep
set out
set term wxt
# EOFProduced the output in Figure 3 here: http://www.btgresearch.org/AcousticReconstruction02042012.pdf
 
Thanks Dr. Courtney,

A Member on the Gnuplot Google Help Group suggested this

set dgrid3d # create a regularized grid from your "data"
set view map # 2D projection
splot dataf us 1:2:($3<1e299?$3:NaN) w pm3d # z-coloured

and this worked quite fine for my dataset.
 

Similar threads

Replies
3
Views
7K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 15 ·
Replies
15
Views
2K
  • · Replies 5 ·
Replies
5
Views
10K
  • · Replies 1 ·
Replies
1
Views
4K
Replies
5
Views
13K
Replies
4
Views
5K
  • · Replies 7 ·
Replies
7
Views
6K
Replies
1
Views
725
  • · Replies 1 ·
Replies
1
Views
3K