Построение одного и того же номера строки данных нескольких блоков с помощью gnuplot - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть файл данных со следующей структурой

block1: line 1
        line 2
        line 3
       .....
block2: line 1
        line 2
        line 3
        ......
block3: .....

Чтобы построить только блок2, я использую команду

plot 'file' u x1:x2 every :::2::2 w l

Как собрать только строку 1 каждого блока по команде plot?

1 Ответ

0 голосов
/ 11 ноября 2018

я думаю, что точки данных из разных блоков отделены пустой строкой. И точки данных, разделенные пустой линией, не выводятся на график с использованием «с линиями».

Попробуйте сделать следующее: запишите нужные данные в новую таблицу, как показано в примере ниже (gnuplot 5.2.5).

### plot values of different blocks connected with lines
reset session
set colorsequence classic
$Data <<EOD
# block line xvalue yvalue
0 0 1 0
0 1 2 1
0 2 3 2
0 3 4 3

1 0 5 10
1 1 6 11
1 2 7 12
1 3 8 13

2 0 9 20
2 1 10 21
2 2 11 22
2 3 12 23
EOD

set table $Data2
   plot $Data u 0:3:4 every ::0::0 with table
unset table
print $Data2

plot $Data u 3:4 w lp,\
     $Data2 u 2:3 w lp
### end code

enter image description here

дополнение: если вы хотите сделать это с несколькими файлами, попробуйте следующее (пока небольшой недостаток: точки из разных файлов не связаны)

### plot every Nth line of all blocks of several systematic files
reset session

FileCount = 2   # number of files
Col1 = 1  # e.g. column of x value
Col2 = 2  # e.g. column of y value
N = 0 #  N=0 is first line of each datablock, N=1 second line, etc...
set print $EveryNthLineFromAllBlocksOfAllFiles
do for [i=1:FileCount] { 
    FILE = sprintf("name_%d.dat",i)
    set table $EveryNthLine
        plot FILE u Col1:Col2 every ::N::N with table
    unset table
    print $EveryNthLine
}
set print

print $EveryNthLineFromAllBlocksOfAllFiles
plot $EveryNthLineFromAllBlocksOfAllFiles u 1:2 w lp
### end code
...