Построение нескольких графиков с использованием индекса к данным из массива - PullRequest
1 голос
/ 16 февраля 2020

Используя версию 5.2 patchlevel 2, я попробовал следующий график:

gnuplot> set xdata time
gnuplot> set timefmt "%s"
gnuplot> array lr_a[100];array lr_b[100]
gnuplot> plot "free.dat" using 2:(i=stringcolumn(0)+1,lr_a[i]=$13,lr_b[i]=$14,$10) with linesp title columnheader(1)
gnuplot> print i
13
gnuplot> print lr_a
[-452057.0,-178648.0,9568.53,10688.5,11016.6,11142.9,11137.5,12296.8,12467.0,-147009.0,-18170.2,-17176.1,-6493.16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]
gnuplot> print lr_b
[0.000292381,0.000119527,5.32936e-07,-1.75101e-07,-3.82532e-07,-4.62388e-07,-4.58968e-07,-1.19192e-06,-1.29956e-06,9.95245e-05,1.80699e-05,1.74415e-05,1.06875e-05,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]

Теперь я хочу добавить графики, используя эти массивы:

j=1
gnuplot> replot "free.dat" using 2:(lr_a[j]+lr_b[j]*$2) with linesp title "LR#".j

Это сработало, однако при попытке чтобы добавить больше таких графиков, как это Initial plot

gnuplot> j=j+1;replot "free.dat" using 2:(lr_a[j]+lr_b[j]*$2) with linesp title "LR#".j
gnuplot> j=j+1;replot "free.dat" using 2:(lr_a[j]+lr_b[j]*$2) with linesp title "LR#".j
gnuplot> print j
3

Все графики одинаковые, помечены LR#3. Additional plots

Почему это так?

Для справки вот (довольно бесполезно) free.dat:

/home   1581728983       51175       51175           0       51175           0           1       51175     10411.5     10411.5           0     10411.5           0           1     10411.5
/home   1581729050       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00976562     -452057  0.000292381    1.00299     10411.5
/home   1581729142       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00920748     -178648  0.000119527    0.83085     10411.5
/home   1581730106       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00799351     9568.53  5.32936e-07  0.0304721     10411.5
/home   1581730231       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00715961     10688.5  -1.75101e-07    -0.0133904     10411.5
/home   1581730248       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00654339     11016.6  -3.82532e-07     -0.033421     10411.5
/home   1581730649       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00606222     11142.9  -4.62388e-07    -0.0487386     10411.5
/home   1581730988       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00567332     11137.5  -4.58968e-07    -0.0582907     10411.5
/home   1581732515       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00552427     12296.8  -1.19192e-06     -0.228729     10411.5
/home   1581732849       51175       51175           0       51175           0           1       51175     10411.5     10411.5  0.00537109       12467  -1.29956e-06      -0.30963     10411.5
/home   1581733526       51175       51175           0       51175           0           1       51175     10412.4     10411.6    0.258446     -147009  9.95245e-05   0.578522     10411.8
/home   1581797054       51175       51175           0       51175           0           1       51175     10412.7     10411.7    0.406035    -18170.2  1.80699e-05   0.818011     10412.8
/home   1581799764       51175       51175           0       51175           0           1       51175     10412.7     10411.7    0.482222    -17176.1  1.74415e-05   0.884514     10412.8
/home   1581802740       51175       51175           0       51175           0           1       51175     10411.5     10411.7    0.469488    -6493.16  1.06875e-05   0.646611     10412.3

1 Ответ

3 голосов
/ 16 февраля 2020

replot не действует так, как вы думаете. Он не воспроизводит предыдущий сюжет; он создает новый график, повторно используя предыдущую команду. Таким образом, последовательность команд

j = j0
plot foo(j)
j = j+1
replot, foo(j)
j = j+1
replot, foo(j)

приводит к 3 копиям того же сюжета foo(j0+2)

Если вы хотите составить график с последовательными значениями k do не использовать replot. Вместо этого сделайте что-то вроде

 plot for [j = j0 : j0+2] foo(j)
...