Gnuplot: How to load and display single numeric value from data file

Lets start with extracting a single cell at (row,col). If it is a single values, you can use the stats command to extract the values. The row and col are specified with every and using, like in a plot command. In your case, to extract the total value, use:

# extract the 'total' cell
stats 'mydata.dat' every ::::0 using 2 nooutput
total = int(STATS_min)

To sum up all values in the second column, use:

stats 'mydata.dat' every ::1 using 2 nooutput
total2 = int(STATS_sum)

And finally, to sum up all values in columns 3:7 in all rows (i.e. the same like the previous command, but without using the saved totals) use:

# sum all values from columns 3:7 from all rows
stats 'mydata.dat' every ::1 using (sum[i=3:7] column(i)) nooutput
total3 = int(STATS_sum)

These commands require gnuplot 4.6 to work.

So, your plotting script could look like the following:

reset
set terminal pngcairo size 1024,768 enhanced
set output "output.png"
set style fill solid 1.00
set style histogram rowstacked
set style data histograms
set xlabel "Case"
set ylabel "Frequency"
set boxwidth 0.8

# extract the 'total' cell
stats 'mydata.dat' every ::::0 using 2 nooutput
total = int(STATS_min)

plot for [i=3:7] 'mydata.dat' every ::1 using i:xtic(1) notitle, \
     '' every ::1 using 0:(s = sum [i=3:7] column(i), s):(sprintf('%d', s)) \
     with labels offset 0,1 title sprintf('total %d', total)

which gives the following output:

enter image description here

Leave a Comment