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?
5.9 Does gnuplot support multiple y-axes on a single plot? Yes.
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.
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.
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).
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).
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With