3

How to plot all data files in the directory with gnuplot? I mean that from each data file a figure will be created. Data files have different names. I tried:

j=0;do for [i in system("ls")] { j=j+1; set term png; set output ''.i.'.png' ; p i u 1:2 w lines lc rgb "navy" t ''.i }

which lead to the error: x range is invalid

plot for [fn in system("ls")] fn with lines title ''.i

which lead to the error: internal error : STRING operator applied to undefined or non-STRING variable

This plot all data in one figure

a=system('a=`tempfile`;cat *.dat > $a;echo "$a"')
plot a u 1:2
2

1 Answer 1

3
+200

I expected this to be a frequently asked question with well documented answers, however, I can't find a suitable example right away...

Edit: you can do it in a "platform-independent" way using gnuplot's variable GPVAL_SYSNAME, which holds the name of the operating system. Furthermore, the user variables DIR for the directory and EXT for file extension are used. If the output files should be in a different directory, e.g. DIR_IN and DIR_OUT could be defined instead of DIR.

Script:

### plot all datafiles in a directory
reset session
set term pngcairo

DIR   = 'Test/'     # directory; use '' for current directory
EXT   = '.dat'      # file extension
FILES = GPVAL_SYSNAME[1:7] eq 'Windows' ? system(sprintf('dir /B %s*%s',DIR,EXT)) : \
                                          system(sprintf('ls     %s*%s',DIR,EXT))     # Linux/MacOS

myInput(s)  = sprintf('%s%s',DIR,s)
myOutput(s) = sprintf('%s%s.png',DIR,s[1:strlen(s)-strlen(EXT)])    # replace file extension with .png

do for [FILE in FILES] {
    set output myOutput(FILE)
    plot myInput(FILE) u 1:2 w lines lc "red" title FILE
}
set output
### end of script
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.