中文网站
  Advanced Search
Read the latest Blogs from IT professionals in the field. Read and write community created documents. Need IT help? Ask our staff. Connect with your peers. Check our Tech Shop for posters, books and software tools. Home

6.12 Automating creation of graphs with gnuplot under Linux

gnuplot is good for automating generation of graphs for numerical data and/or mathematical functions. For "interactive" generation of graphs, I prefer any spreadsheet. As old-fashioned as gnuplot may look, it can be quite handy if you want to periodically re-generate a graph or visualize (for inspection) massive amounts of data from a graph "template". gnuplot is flexible (many options available, including 3d plots) but one needs to take your time to learn it. Setting up a complex graph can take me 2 hours (but it's OK, if the graph is to be re-used many times over). The best help is to start gnuplot, and on the "gnuplot>" prompt, type "help". gnuplot is available for Linux and MS Windows.

My data sets are stored in text (ASCII, *.dat) files. My "graph templates" are stored in gnuplot "command" files (*.gnu). The output goes to a graphics file (*.png) which can be printed or imported to any word processor.

To generate a graph from an example gnuplot command file "make_graphs.gnu", I can do:
gnuplot make_graphs.gnu

To display the graph, I would do (in X terminal):

display my_graph.png

My example "make_graphs.gnu" that generates an x-y graph follows.

# Comment are introduced with the hash (#)
# Stamp the graph with the current date and time
set timestamp "%Y-%m-%dT%T%z"
# This sets the graph resolution (the default is 100)
set samples 600
# Save the plot to a *.png file (make it colour)
set output "my_plot.png"
set terminal png color
#interesting terminals: png, x11, postscript, postscript eps, hpgl
set title "My Graph" # Graph title
set xlabel "Distance [m]" # title of x1 axis (bottom)
set x2label "Distance [feet]" # title of x2 axis (top)
set ylabel "sin meters" # title of y1 axis (left)
set y2label "log feet" # title y2 axis (right)
set xtics # control major tic marks on the axis
set x2tics; set ytics; set y2tics #commands can be separated with semicolons
set mytics # control minor tics on the axis, here I add them to the y axis
set xrange [0:15] # Range for display on the x1 axis
set x2range [0:15.0/0.305] #Expressions are ok. This one converts meters to feet.
set yrange [*:*] # The "*" sets the range to auto
set y2range [*:*] # Range for the y2 axis
set nologscale # or "set logscale x1x2y1y2" #Control logscale, linear scale is the default
set nogrid # or "set grid" #Control gridlines, no grid is the default
set key outside # or "set nokey" #Control legend and its positions: "top", "bottom", "left"
# The following line creates the plot with 4 graph series
plot sin(x) axes x1y1, log(x) axes x2y2, "data.dat" using 1:2, \
"data.dat" using 1:3
# Long lines can be split with \
# The third series uses columns 1 and 2 from the file
# The fourth plots the 3 column agains the 1st column from the data file.

Related Terms:linux,Automating creation,graphs,gnuplot,axis,gnuplot command