reset f(x) = x+20 g(x) = x*x*x-2.0*x*x+x+10-x*x*x*x*0.01 set sample 101 set parametric set trange [0:4] set table 'filled.tab' plot g(t)+5.0*(0.5-rand(0)), f(t)+5*(0.5-rand(0)) unset table unset parametric set iso 2, 100 set xrange [0:100]; set yrange [0:50] set table 'filledbg.tab' splot y*0.5 unset table set key left unset colorbox set border lc rgb "white" set grid front lc rgb "#dddddd" set xlabel 'Time [a.u.]' tc rgb "white" set ylabel 'Amplitude [a.u.]' tc rgb "white" set palette defined (0 0.2 0.2 0.2, 1 0.6 0.6 0.6) set object 1 rect from screen 0, 0 to screen 1, 1 behind fc rgb "black" fillstyle solid 1.0 p 'filledbg.tab' w image t '', \ 'filled.tab' u 0:1:2 w filledcurve above lt 1 lc rgb "#467F1E" t '', \ '' u 0:1:2 w filledcurve below lt 1 lc rgb "#802020" t '', \ '' u 0:1 w l lt 8 lw 1 t 'First', '' u 0:2 w l lt 9 lw 1 t 'Second'
The first part of the code is nothing but generating some dummy data. If you have something to plot, this is unnecessary, and the actual plot takes only 12 lines altogether. However, if you want to have a gradient in the background, you will have to generate 'filledbg.tab'. This is the file that we will plot as an image, and this is what will give the gradient. I would also point out here that in order to generate 'filledbg.tab', we need the range of the actual plot. If you don't know it beforehand, you can use a trick to determine this. I have discussed this at great length in a few of my previous posts, so you could look it up there.
Now, sometimes you do need a background for the plot, and this is not just some silly whim, but you might have to match the background of your poster, or your transparency. In order to achieve this, we will draw a rectangle behind the graph, and fill it with the desired colour. What we should keep in mind, however, is that without taking extra measures, the axis labels will have the default colour of black, and this will not look very good on a black background. Therefore, you should specify the colour in the declaration of the labels.
In the plot, first we draw the gradient. Without defining the grid in the front, the grid would be obscured, therefore, we push it to the forefront. The real curves are drawn four times: first we draw the filled curves, simply using three columns of our data file. (One column can be dropped, in which case an axis or a function could be used to define the boundaries.) If the two curves cross each other, we could have different colours, depending on the relative size of the functions that we plot. This is why we have to plot our curves for the second time: we have different colour for when the first curve is above and below the second one. The last two plot are just there to draw the actual curves in different colours.
No comments:
Post a Comment