gnuplot: nilai variabel dan definisi dalam perintah plot

Sep 24 2020

Saya baru saja menemukan yang berikut ini:

Menurut manual gnuplot, elemen plot mungkin berisi definisi.

Syntax: 

      plot {<ranges>} <plot-element> {, <plot-element>, <plot-element>}

Each plot element consists of a definition, a function, or a data source 
together with optional properties or modifiers: 

      plot-element:
           {<iteration>}
           <definition> | {sampling-range} <function> | <data source>
                        | keyentry
           {axes <axes>} {<title-spec>}
           {with <style>}

Periksa contoh berikut:

  • Untuk grafik pertama y=x+1diplot karena a=1sudah didefinisikan sebelumnya. Seperti yang diharapkan.

  • Untuk grafik kedua dan perintah plot pertama harus sama tetapi y=2*x+1diplot sebagai gantinya (dua kali).

  • Dalam grafik ketiga ketika a=1ditentukan secara khusus, itu diplot seperti yang diharapkan.

Mengapa gnuplot mengabaikan a=1grafik kedua? Apakah saya salah paham?

Kode:

### definitions in plot command
reset session

a = 1
b = 1
f(x) = a*x + b

set yrange[-40:40]
set multiplot layout 1,3
    plot     f(x)
    plot     f(x), a=2 f(x), a=3 f(x)
    plot a=1 f(x), a=2 f(x), a=3 f(x)
unset multiplot
### end of code

Hasil:

Jawaban

4 Ethan Sep 24 2020 at 11:29

Diagnosis Anda sedikit salah. Pada panel kedua yang pertama, plot ungu ditumpangkan dengan plot a = 3 dan bukan dengan plot a = 2.

Mengapa? Karena gnuplot mengakumulasi semua elemen dari plot lengkap sebelum benar-benar menggambar salah satu dari mereka. Ini melibatkan membuat dua melewati baris perintah. Satu kartu untuk mengurai dan memuat data dari sumber data apa pun yang disebutkan (diperlukan misalnya untuk penskalaan otomatis), lalu satu kartu kedua untuk mengevaluasi fungsi apa pun yang melebihi rentang (yang mungkin telah ditentukan dengan penskalaan otomatis). Selama lintasan pertama di sini, a ditetapkan ke 2 dan kemudian ke 3. Pada awal lintasan kedua a masih 3 dan jika tidak ada definisi awal untuk mengubahnya, itulah yang digunakan ketika f (x) dievaluasi .