2016-09-19 53 views
0

我試圖在單個座標系中繪製4個數據集。我可以自己繪製它們中的每一個。但是,當我嘗試使用相同的繪圖函數繪製2個或更多圖形時,出現錯誤。我不能使用列表,因爲我想將數組縮放到2 * 10000,列表不能。我正在使用楓葉18. 任何人都可以請幫我解決這個問題嗎?在楓樹中繪製多個數組

這是我的代碼:

enter image description here

這裏是一個繪製的數據集: enter image description here

這裏是我的錯誤,當試圖繪製多套(注意:我曾嘗試使用{}而不是[]): enter image description here

回答

2

你的問題是,你使用pairzip不會生成其佈局適用於繪圖的陣列P[i]。 (也許你從一些代碼中挑選了一些代碼,用來產生列表而不是陣列)

相反,你可以構造P[i]作爲iterator-by-2矩陣(即2列矩陣)。

方式一:

restart; 

mu := 2.5: 
iterator := 25: 

fcn := proc(a) 
    local F,i; 
    F := Array(1..iterator); 
    F[1] := a; 
    for i from 2 by 1 to iterator do 
    F[i] := mu*F[i-1]*(1-F[i-1]); 
    end do; 
    F; 
end proc: 

f[1]:=fcn(0.01): 
f[2]:=fcn(0.1): 
f[3]:=fcn(0.3): 
f[4]:=fcn(0.5): 

x := Array([seq(i,i=1..iterator)]): 

for i from 1 to 4 do 
    P[i] := <x,f[i]>^%T: 
end do: 

plot([P[1],P[2],P[3],P[4]]); 

另一個(類似)的方式:

restart; 

mu := 2.5: 
iterator := 25: 

fcn := proc(a) 
    local F,i; 
    F := Vector(1..iterator); 
    F[1] := a; 
    for i from 2 by 1 to iterator do 
    F[i] := mu*F[i-1]*(1-F[i-1]); 
    end do; 
    F; 
end proc: 

f[1]:=fcn(0.01): 
f[2]:=fcn(0.1): 
f[3]:=fcn(0.3): 
f[4]:=fcn(0.5): 

x := Vector([seq(i,i=1..iterator)]): 

for i from 1 to 4 do 
    P[i] := <x|f[i]>: 
end do: 

plot([P[1],P[2],P[3],P[4]]); 

你可以選擇使用命令plots:-listplot直接在f[i],雖然你很可能的方式還可以指定不同的顏色對於每個人來說,當你使用plots:-display將它們全部渲染在一起時,它看起來不錯。

我不考慮性能。有辦法做到這一切,並獲得更快的計算。我故意保留你的基本方法。