Gnuplot , pm3d with contour lines

前端 未结 1 710
感动是毒
感动是毒 2021-01-28 17:03

i am 3d plotting a matrix with some values, and i need to add contour lines to the plot, is there a simple gnuplot command to do this?

I tried the command: \"set contou

相关标签:
1条回答
  • 2021-01-28 17:17

    What you are missing is to tell gnuplot where to put the contours. This is done via the set cntrparam levels incr -0.3,0.1,0.5 command which means: start at -0.3 and trace a contour every o.1 up to 0.5.

    AFAIK if you want to make contours all black, you have to save the contour lines in a temporary file (here contour.txt).

    So your script would be

    reset
    set contour
    unset surface
    set cntrparam levels incr -0.3,0.1,0.5
    
    set view map
    set xrange [0:30]
    set yrange [0:30]
    
    set dgrid3d 100,100,4
    
    set table "contour.txt"
    splot 'test.txt'
    unset table
    
    unset contour
    set surface
    set table "dgrid.txt"
    splot 'test.txt'
    unset table
    
    reset
    set pm3d map
    unset key
    set palette defined (0 '#352a87', 1 '#0363e1',2 '#1485d4', 3 '#06a7c6', 4 '#38b99e', 5 '#92bf73', 6 '#d9ba56', 7 '#fcce2e', 8 '#f9fb0e')
    set autoscale fix
    set grid
    
    splot 'dgrid.txt' w pm3d, 'contour.txt' w l lc rgb "black"
    

    which gives you this:

    Note:

    you can get rid of interpolation file (dgrid.txt) if you format a bit your datafile by leaving a blank line after each row (i.e. every 30 datapoints) because they are already mesh-ordered.

    This could be done also with a awk script. But I'm too lazy to look into it...

    The rest will remain the same and will work as expected.

    here is how it should look like :

    In which case the script would simply become:

    set pm3d map impl
    set contour
    set style increment user
    do for [i=1:18] { set style line i lc rgb "black"}
    set cntrparam levels incr -0.3,0.1,0.5
    set palette defined (0 '#352a87', 1 '#0363e1',2 '#1485d4', 3 '#06a7c6', 4 '#38b99e', 5 '#92bf73', 6 '#d9ba56', 7 '#fcce2e', 8 '#f9fb0e')
    set autoscale fix
    splot 'test.txt' w pm3d notitle
    

    with no need of ntermediate file and with better contour since data in not interpolate by gridded:

    0 讨论(0)
提交回复
热议问题