gnuplot: plot komutundaki değişken değerler ve tanımlar
Sadece şuna rastladım:
Gnuplot el kitabına göre bir çizim elemanı bir tanım içerebilir.
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>}
Aşağıdaki örneği kontrol edin:
Daha önce tanımlandığı için ilk grafik
y=x+1çizilmiştira=1. Beklenildiği gibi.İkinci grafik ve ilk çizim komutu için aynı olmalıdır
y=2*x+1, bunun yerine (iki kez) çizilir.Üçüncü grafikte
a=1açıkça belirtildiğinde beklendiği gibi çizilir.
Gnuplot neden a=1ikinci grafiği görmezden geliyor ? Bir şeyi yanlış mı anladım?
Kod:
### 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
Sonuç:
Yanıtlar
Teşhisiniz biraz yanlış. İkinci panelde ilk mor grafik, a = 2 grafiği yerine a = 3 grafiği ile üst üste bindirilir.
Neden? Çünkü gnuplot, herhangi birini çizmeden önce tam arsanın tüm unsurlarını biriktirir. Bu, komut satırı üzerinden iki geçiş yapmayı içerir. Belirtilen herhangi bir veri kaynağından verileri ayrıştırmak ve yüklemek için bir geçiş (örneğin, otomatik ölçeklendirme için gereklidir), ardından aralık üzerindeki herhangi bir işlevi (otomatik ölçeklendirme ile belirlenmiş olabilir) değerlendirmek için ikinci bir geçiş. Buradaki ilk geçiş sırasında, a 2'ye ve sonra 3'e ayarlanır. İkinci geçişin başlangıcında a hala 3'tür ve onu değiştirmek için bir başlangıç tanımının yokluğunda f (x) değerlendirildiğinde kullanılan şey budur. .