Синтаксическая ошибка: несколько графиков, один из которых представляет собой цикл for со звездочкой (звездочкой) - PullRequest
2 голосов
/ 23 сентября 2019

С учетом следующего файла данных datafile.txt

"distance bus1 bicycle1"
12.1 16.29994171768731
15.0 23.23394929838676
20.0 17.63884633415712
25.0 2.2977170652861667
30.0 22.638830796409298
35.0 37.904820273943606
38.2 49.68696609775994


"distance bus1 bicycle2"
12.1 10.389230000341742
15.0 15.82783623872837
20.0 11.262011365648817
25.0 2.3291889288592533
30.0 25.930554010842158
35.0 45.36376748022544
38.2 57.535263969151465

Эта команда работает.

plot for [i=0:1] 'datafile.txt' index i with lines title columnheader(1), 1.0 with lines title "collision limit"

Эта команда также работает.

plot for [i=0:*] 'datafile.txt' index i with lines title columnheader(1)

Но объединение *и запятая дает синтаксическую ошибку в gnuplot:

plot for [i=0:*] 'datafile.txt' index i with lines title columnheader(1), 1.0 with lines title "collision limit"
gnuplot> plot for [i=0:*] 'datafile.txt' index i with lines title columnheader(1), 1.0 with lines title
"collisio
                          ^
         warning: ignoring trailing comma in plot command

gnuplot> plot for [i=0:*] 'datafile.txt' index i with lines title columnheader(1), 1.0 with lines title
"collisio"
                          ^
         unexpected or unrecognized token

gnuplot> n limit"
gnuplot> plot for [i=0:*]
                         ^
         function to plot expected

Есть идеи, что я делаю неправильно?Я использую gnuplot 5.2 patchlevel 7.

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Циклы с *, например, plot for [i=0:*] ..., также вызовут проблемы в других случаях (по крайней мере, это то, что я испытал).Однако другим обходным путем может быть следующий, за счет некоторых дополнительных вычислений на stats.Затем вы можете использовать переменную STATS_blocks, которая должна сообщать вам количество наборов данных, т.е. максимальный индекс равен STATS_blocks-1:

FILE = 'datafile.txt'
stats FILE nooutput
plot for [i=0:STATS_blocks-1] FILE index i with lines title columnheader(1), \
     1.0 with lines title "collision limit"
1 голос
/ 24 сентября 2019

Я не могу объяснить, почему это происходит, возможно, это какая-то ошибка, но я могу предложить обходной путь:

plot for [i=0:*] 'datafile.txt' index i with lines title columnheader(1), \
     '+' using 1:(1.0) with lines title "collision limit"

Примечание: ошибка теперь исправлена ​​в апстриме, и исправление сначала появитсяв гнуплоте 5.2.8

...