Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gnuplot : plotting data from multiple input files in a single graph

Tags:

gnuplot

I am trying to plot a graph using gnuplot. I have six text files. Each text file contains two columns. The first column represents time in seconds (a floating point number). The second one is a sequence number. I want to plot the graph of time vs. sequence number in a single graph for all six files. I am using this file to do that.

set terminal png set output 'akamai.png'  set xdata time set timefmt "%S" set xlabel "time"  set autoscale  set ylabel "highest seq number" set format y "%s"  set title "seq number over time" set key reverse Left outside set grid  set style data linespoints  plot "print_1012720" using 1:2 title "Flow 1", \ plot "print_1058167" using 1:2 title "Flow 2", \ plot "print_193548"  using 1:2 title "Flow 3", \  plot "print_401125"  using 1:2 title "Flow 4", \ plot "print_401275"  using 1:2 title "Flow 5", \ plot "print_401276"  using 1:2 title "Flow 6" 

Where my files are:

  • print_1012720
  • print_1058167
  • print_193548
  • print_401125
  • print_401275
  • print_401276

It is giving a strange error as below:

"plot.plt", line 24: undefined variable: plot

Am I doing something wrong? Is it possible to plot the input data from different files in the same graph?

like image 627
liv2hak Avatar asked Jun 18 '12 23:06

liv2hak


People also ask

Does gnuplot support multiple Y axes on a single plot?

5.9 Does gnuplot support multiple y-axes on a single plot? Yes.

How use gnuplot to plot data from a file?

To plot functions simply type: plot [function] at the gnuplot> prompt. Discrete data contained in a file can be displayed by specifying the name of the data file (enclosed in quotes) on the plot or splot command line. Data files should have the data arranged in columns of numbers.

What are possible output formats of gnuplot?

png, and svg terminal It exists also a png terminal, but it produces uglier output and doesn't use the UTF-8 encoding the cairo library does. You may also have noticed that we set the size to a given x,y value. If we don't do this, the default value of 640,480 is used.

Does gnuplot have a GUI?

gnuplot is a command-line and GUI program that can generate two- and three-dimensional plots of functions, data, and data fits. The program runs on all major computers and operating systems (Linux, Unix, Microsoft Windows, macOS, FreeDOS, and many others).


2 Answers

You're so close!

Change

plot "print_1012720" using 1:2 title "Flow 1", \ plot "print_1058167" using 1:2 title "Flow 2", \ plot "print_193548"  using 1:2 title "Flow 3", \  plot "print_401125"  using 1:2 title "Flow 4", \ plot "print_401275"  using 1:2 title "Flow 5", \ plot "print_401276"  using 1:2 title "Flow 6" 

to

plot "print_1012720" using 1:2 title "Flow 1", \      "print_1058167" using 1:2 title "Flow 2", \      "print_193548"  using 1:2 title "Flow 3", \       "print_401125"  using 1:2 title "Flow 4", \      "print_401275"  using 1:2 title "Flow 5", \      "print_401276"  using 1:2 title "Flow 6" 

The error arises because gnuplot is trying to interpret the word "plot" as the filename to plot, but you haven't assigned any strings to a variable named "plot" (which is good – that would be super confusing).

like image 115
mgilson Avatar answered Sep 21 '22 11:09

mgilson


You may find that gnuplot's for loops are useful in this case, if you adjust your filenames or graph titles appropriately.

e.g.

filenames = "first second third fourth fifth" plot for [file in filenames] file."dat" using 1:2 with lines 

and

filename(n) = sprintf("file_%d", n) plot for [i=1:10] filename(i) using 1:2 with lines 
like image 42
Richard Avatar answered Sep 21 '22 11:09

Richard