This is an old revision of the document!
scatter plot: plot ’dataset.txt’ using 1:2 plot ’dataset.txt’ using 1:2 with points example for the short format: p ’dataset.txt’ u 1:2 w p pt 1 lt 2 lw 2 notitle line plot: plot ’dataset.txt’ using 1:2 with lines multiple data series: use replot or separate by commas plot ’dataset.txt’ using 1:2, ’data.csv’ using 1:3 set key: plot ’dataset.txt’ using 1:2 title "key"
Datafile: dataset.txt
Q: How to plot col(A):col(B) if col(C) == 0? A: plot ‘dataset.txt’ using 1:($3==0?$2:1/0) Q: What if we want to plot conditionally on another column containing text? A: plot ‘dataset.txt’ using 1:(stringcolumn(3) eq “a”? $2:1/0) title “a” lc rgb “blue” ,\ “” using 1:(stringcolumn(3) eq “b”? $2:1/0) title “b” lc rgb “red”
Q: What is ‘stats’? Syntax: stats 'filename' [using N[:M]] [name 'prefix'] [[no]output]] Example: stats "dataset.txt" using 2 name "A" Q: How to draw a rectangle with a colored border in gnuplot? Syntax: set object <index> rectangle {from <position> {to|rto} <position> | center <position> size <w>,<h> | at <position> size <w>,<h>} # Force the entire area enclosed by the axes to have background color cyan set object 1 rect from graph 0, graph 0 to graph 1, graph 1 back set object 1 rect fc rgb "cyan" fillstyle solid 1.0 # Position a red square with lower left at 0,0 and upper right at 2,3 set object 2 rect from 0,0 to 2,3 fc lt 1 # Position an empty rectangle (no fill) with a blue border set object 3 rect from 0,0 to 2,3 fs empty border rgb "blue" # Return fill and color to the default style but leave vertices unchanged set object 2 rect default
timecolumn() function parses a time string from a column according to the set timefmt settings. The result is a time stamp in seconds.
set xdata time set timefmt "%H:%S" set format x "%H" set style fill solid 0.6 border -1 set boxwidth 0.3 relative set xrange["00:00":"23:30"] set style data boxes plot 'dataset.txt' using 1:2, \ '' using (timecolumn(1)+60*20):($2*0.5), \ '' using (timecolumn(1)+60*40):($2*0.7)
#example_1 plot 'dataset.txt' every I:J:K:L:M:N plot 'dataset.txt' every 2 # Plot every 2 lines plot 'dataset.txt' every ::3 # Plot starting from the 3rd line plot 'dataset.txt' every ::3::15 # Plot lines 3-15 #example_2 do for [t=0:50] { outfile = sprintf('animation/bessel%03.0f.png',t) set output outfile splot u*sin(v),u*cos(v),bessel(u,t/50.0) w pm3d ls 1 pause 0.02 }
There are two different ways to draw heatmaps with gnuplot:
Palette is a color storage for use by pm3d, filled color contours or polygons, color histograms, color gradient background.
set palette (i.e. without options): sets up the default values set palette gray switches to a gray only palette set palette rgbformulae, set palette defined, set palette file and set palette functionsswitch to a color mapping. set palette color is an easy way to switch back from the gray palette to the last color mapping.
Interpolate: The option interpolate m,n will interpolate between grid points to generate a finer mesh. For data files, this smooths the color surface and enhances the contrast of spikes in the surface.
How can we include the graphics produced by Gnuplot into a TEX document?
# install texlive apt-get install texlive # create 'text.gp' and add set terminal latex set out 'plot.tex' plot [-5:5] [-1.5:1.5] sin(x+pi) title "$\\sin(x+\\pi)$" set out # run it gnuplot test.gp # text editor: create example.tex and put some content in it \documentclass{article} \begin{document} \input{plot.tex} \end{document} # run latex on it to produce some output # ..don't worry about most of this output -- the important part is the Output written on example.dvi line, which says that it was successful. latex example.tex # now you need to view the output file with xdvi # this will pop up a window with the beautifully formatted output in it. Hit `q' to quit this, or you can leave it open and it will automatically update when the example.dvi file is modified (so whenever you run latex to update the output). xdvi ex1.dvi & # to produce a PDF of this you simply run pdflatex instead of latex # ..and you'll have an example.pdf file created instead of the example.dvi file. pdflatex example.tex
Datafile: conditional_plotting.txt.
Using Gnuplot, generate two separate bar graphs for the following:
The ratio is considered to be high enough when $6/$4 > 1. This will help you spot the people who live less healthy. The graphs should be as complete as possible (title, axes names, etc.).
Datafile: health.txt
Use Gnuplot to generate the following graphs:
Datafile: time_data.txt
Using the code provided in “Tutorial 03. Time-based data when plotting in gnuplot”, use the histogram style, and format the xtic labels using strftime and timecolumn.
set timefmt "%H:%S" set style fill solid 0.6 border -1 set style data histogram set style histogram clustered gap 1 plot 'data.dat' using 2:xtic(strftime('%H', timecolumn(1))), \ '' using ($2*0.5), \ '' using ($2*0.7)
Datafile: histograms.txt
Using Gnuplot, create multiple histograms with 'set style histogram' and 'boxes'.
Create a simple bar graph. Remember to make the lines solid.
Datafile: animations.txt
Datafile: heatmaps.txt
Using Gnuplot, create heatmaps using:
Create heatmap WITHOUT interpolation;
Datafile: heat_map_data.txt
Use Gnuplot to create three 2D maps in a single 3D graph. Export the result as a .pdf file (using gnuplottex package) and include also a \caption{Describe how you did the exercise}. Hint: You have to give the splot command 4 pieces of information: the x, y, and the z coordinate,and the value for the color.
set view 55,110 splot "heat_map_data.txt" matrix u 1:2:(-0.5):3 w image, \ "" matrix u 1:(-0.5):2:3 w image, \ "" matrix u (-0.5):1:2:3 w image
Create myscript.tex and add the lines below. You should put in your 'begin{gnuplot}…end{gnuplot}' your solution for plotting. The main advantage for using gnuplottex is that you are allowed to use gnuplot directly inside the .tex file.
\documentclass[a4paper]{article} \usepackage{gnuplottex} \begin{document} \begin{gnuplot}[terminal=pdf,terminaloptions={font ",10" linewidth 3}] plot sin(x), cos(x) \end{gnuplot} \begin{gnuplot}[scale=0.8] set grid set title 'gnuplottex test $e^x$' set ylabel '$y$' set xlabel '$x$' plot exp(x) with linespoints \end{gnuplot} \end{document}
Compile it! Your final result should look like this: myscript.pdf.
#compile with pdflatex --shell-escape myscript.tex
Observations: If gnuplottex is missing, here is gnuplottex.sty