Discussion:
plot for [i = 'list of numbers']
(too old to reply)
Jörg Buchholz
2021-07-13 12:11:01 UTC
Permalink
Hello,

I have a dataset with 10 columns. First I will plot most of them and I use:

plot for [i = 3:10] 'file' skip 6 u 2:i w l t sprintf("T_%i",i-2)

in a second plot I will plot only column 6,8 and 9. Is there a way to
use a list of numeric or only a list of strings.

Plot for [i = 6, 8, 9] 'file' skip 6 u 2:i w l t sprintf("T_%i",i-2)

or

list = "6 8 9"
plot for [i in list] 'file' skip 6 u 2:i w l t sprintf("T_%i",i-2)

Does not work. A solution that works is the following, but it is little
more work.

plot for [i = 6:8:2] 'file' skip 6 u 2:i w l t sprintf("T_%i",i-2),\
for [i = 9:9] '' skip 6 u 2:i w l t sprintf("T_%i",i-2)




Jörg
Hans-Bernhard Bröker
2021-07-13 12:37:24 UTC
Permalink
Post by Jörg Buchholz
list = "6 8 9"
plot for [i in list] 'file' skip 6 u 2:i w l t sprintf("T_%i",i-2)
Close, but no cigar. The string-based list does not work like that
because its elements evaluated by the for loop are still strings.

The following would have worked, though:


plot for [i in "6 8 9"] 'file' u 2:int(i)

The following may be more useful. See "help arrays" to understand what
it does:

n = 3
array list[n] = [6, 8, 9]
plot for [i in 1:n] 'file' u 2:list[i]
Jörg Buchholz
2021-07-14 05:07:07 UTC
Permalink
Post by Jörg Buchholz
list = "6 8 9"
plot for [i in list] 'file' skip 6 u 2:i w l t sprintf("T_%i",i-2)
Close, but no cigar.  The string-based list does not work like that
because its elements evaluated by the for loop are still strings.
    plot for [i in "6 8 9"] 'file' u 2:int(i)
The following may be more useful.  See "help arrays" to understand what
    n = 3
    array list[n] = [6, 8, 9]
    plot for [i in 1:n] 'file' u 2:list[i]
Thanks a lot. At the moment I prefer your first solution, cause I
understood it "out of the box".

Jörg

Loading...