Search code examples
gnuplot

Using gnuplot, how to 'cut out' usused y-axis regions of the graph


I am trying to plot a graph, where on the Y axis I have CPU Utilization, and the current range is from 0-100%. My data only consists from 0-20% and 80-100%, and I just have a large white gap from 20-80%. Is there any way to 'cut out' this blank space, so the viewer can see in more detail what is going on in the 0-20% and 80-100% ranges?

Thank you.


Solution

  • As Christoph said in the comments this needs to be done manually using set multiplot and removing borders, etc. An example:

    set multiplot
    # remove border and ytics from right hand side
    set border 7
    set ytics nomirror
    # set top and bottom margins for both halves of the plot
    set tmargin at screen 0.96
    set bmargin at screen 0.1
    # set left and right margins for left half of the plot
    set lmargin at screen 0.1
    set rmargin at screen 0.5
    # set xrange for left half of the plot
    set xrange [0:2*pi]
    # set some lines to delimit transition from one half of the plot to next
    set arrow from screen 0.50,0.08 to screen 0.52,0.12 nohead
    set arrow from screen 0.49,0.08 to screen 0.51,0.12 nohead
    set arrow from screen 0.50,0.94 to screen 0.52,0.98 nohead
    set arrow from screen 0.49,0.94 to screen 0.51,0.98 nohead
    # plot left half
    plot sin(x) not
    # remove border from left hand side and set ytics on the right
    set border 13
    unset ytics
    set y2tics
    set format y2 ""
    # set left and right margins for right half of the plot
    set lmargin at screen 0.51
    set rmargin at screen 0.91
    # set xrange for right half of the plot
    set xrange [13.5:13.5+2*pi]
    # plot
    plot sin(x) axes x1y2
    

    enter image description here