gnuplot: các giá trị và định nghĩa biến trong lệnh plot

Sep 24 2020

Tôi chỉ tình cờ gặp những điều sau:

Theo sổ tay gnuplot, một phần tử cốt truyện có thể chứa một định nghĩa.

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>}

Kiểm tra ví dụ sau:

  • Đối với đồ thị đầu tiên y=x+1được vẽ vì a=1đã được xác định trước đó. Như mong đợi.

  • Đối với biểu đồ thứ hai và lệnh biểu đồ đầu tiên, nó phải giống nhau nhưng y=2*x+1được vẽ biểu đồ thay thế (hai lần).

  • Trong biểu đồ thứ ba khi a=1được chỉ định rõ ràng, nó được vẽ như mong đợi.

Tại sao gnuplot lại bỏ qua a=1biểu đồ thứ hai? Tôi đã hiểu lầm điều gì đó?

Mã:

### 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

Kết quả:

Trả lời

4 Ethan Sep 24 2020 at 11:29

Chẩn đoán của bạn hơi sai. Trong bảng thứ hai, ô thứ nhất, màu tím được chồng lên với ô a = 3 chứ không phải là ô a = 2.

Tại sao? Bởi vì gnuplot tích lũy tất cả các yếu tố của cốt truyện đầy đủ trước khi thực sự vẽ bất kỳ yếu tố nào trong số chúng. Điều này liên quan đến việc thực hiện hai lần vượt qua dòng lệnh. Một lần chuyển để phân tích cú pháp và tải dữ liệu từ bất kỳ nguồn dữ liệu nào được đề cập (cần thiết cho ví dụ: tự động chia tỷ lệ), sau đó một lần chuyển thứ hai để đánh giá bất kỳ chức năng nào trong phạm vi (có thể được xác định bằng cách tự động phân tỷ lệ). Trong lần vượt qua đầu tiên ở đây, a được đặt thành 2 và sau đó là 3. Tại thời điểm bắt đầu của lần vượt qua thứ hai, a vẫn là 3 và trong trường hợp không có định nghĩa ban đầu để thay đổi nó được sử dụng khi f (x) được đánh giá .