General plotting syntax: plot "data.file" , ,... In most simple case a can be a 'filepath', with all defaults. Can give multiple -e switches. To specify a gplot file on CLI and then leave the generated graph displayed, add -p switch. .gpl seems to be conventional suffix for gplot command files. Data files With default using parse, \+ is delimiter. To plot multiple series from a data file, multiple s load 2 columns from the same file. # lines are skipped. Can use extreme abbreviations: linespoints: lp points: p using: u with: w linecolor: lc linewidth: lc Apparently no abbreviations for: plot, boxes DEFAULTS: Plot type = "with points" == "w p". Axes ranges are such that min/max points are ON the axes and can't be seen. To add a margin, use like: set xrange [0:10]; set yrange [2:12]; Using clause "1:2", meaning \s+-delimited column 1 and column 2. Line graph: gnuplot -p -e "plot 'file/path1.txt' w lp" To PNG: gnuplot -e "set term png; plot 'file/path1.txt' w lp" > out.png Bar graph: gnuplot -p -e "set boxwidth 0.9 relative; set style fill solid 1.0; plot '/tmp/bars.txt' w boxes" BUG: Last bar does not render correctly. Workaround:Add an extra data point with min. value. OHLC/Financebars graph: gnuplot -p -e "set bar 5.0; plot 'data.gpdata' using 1:2:3:4:5:6 with financebars lc variable lw 2" Data file needs 6 columns like so: # time open low high close color 1645700000 10.0 07.0 26.0 20.0 -1 1645760000 20.0 17.0 36.0 30.0 7 1645840000 20.0 17.0 36.0 30.0 2 Set color values according to close values: == previous point: -1 for black < previous point: 7 for black > previous point: 2 for green To add text or a circle anywhere (I don't know how to addd a line yet): set label at 1645820000, 30 "Heyo" point pointtype 7 pointsize 3 lc "forest-green"; I have problems if I do this after the data is plotted instead of before. The text ("Heyo") may be blank, or it may be colored with option like 'tc "forest-green"'. Reads input files (or interactive) of gnuplot commands. Most importantly: plot [3:7] 'file/path1.txt' with linespoints, 'file/path2.txt' with lines Where only "plot" and one file path are required. [3:7] contains the range of X values to plot from the input. Data file can contain 1 val per line, beginning with index 0, or may contain 2 (space-separated) values per line for X and Y. To write to a png file, just add "set term png;" before the plot command and stdout will be the PNG. Default resolution is pitiful 640x480. Can specify any resolution with suffix to the set term command. And for more clear rendering can use cairopng at cost of filesize. E.g.: set term pngcairo size 1280,720 Date/Time plotting (on X axis) For some damned reason you must specify 'using' even if you want 1:2 default. %c input format is UNIX timestamps, which is seconds past 2970, NOT microseconds which is Java/JavaScript integral convention. gnuplot -p -e 'set xrange [1645131525:1645131550]; set yrange [1:5]; set xdata time; set timefmt "%s"; set xtics format "%H:%M:%S"; plot "/tmp/2coldata" u 1:2' Frequency bar plot # from https://psy.swansea.ac.uk/staff/carter/gnuplot/gnuplot_frequency.htmk clear; reset; set key off; set border 3; # Add a vertical dotted line at x=0 to show centre (mean) of distribution. set yzeroaxis; # Each bar is half the (visual) width of its x-range. set boxwidth 0.05 absolute; <-- set to half of bin_width for lots of bar sep. set style fill solid 1.0 noborder; bin_width = 0.1; <-- set to real bucket width for your input values bin_number(x) = floor(x/bin_width); rounded(x) = bin_width * ( bin_number(x) + 0.5 ); plot 'gaussian.txt' using (rounded($1)):(1) smooth frequency with boxes;