2016-06-13 146 views
0

在同一個x範圍內繪製多條曲線的速度比以下更快嗎?Python和Matplotlib:在同一個圖上快速繪製多個圖

import numpy as np 
import matplotlib.pyplot as plt 

N = 100 # trajectories 
p = 1e3 # points 
x = np.linspace(0, 2*np.pi, p) 
y = [np.sin(x)**i for i in range(N)] 

color = iter(plt.cm.rainbow(np.linspace(0, 1, N))) 
[plt.plot(x, y[i], c=next(color)) for i in range(N)] 
plt.show()) 

此代碼繪製多軌跡時(N〜1E5)

+0

每個小區使用更少的點數? 10,000('x = np.linspace(0,2 * np.pi,1e5)')似乎有點過分。在我的系統中,每個小區100個點產生的線條與10,000點的線條一樣平滑。 (沒有大塊土地造成的減速) – SiHa

+0

雖然 - 你真的*需要每行1e5點嗎? – SiHa

回答

2

我懷疑你是否會發現一個顯著更快的解決方案需要相當長的時間。你可以嘗試的東西,如除去周圍plot循環:

N = 200 
x = np.linspace(0, 2*np.pi, 1e5) 
y = np.array([np.sin(x)**i for i in range(N)]) 

plt.plot(x, y.transpose()) # I left out the colors for now.. 

對於少數行的,這似乎是有點快,但對你的問題的大小是完全一樣快/慢你原來的解決方案。

+0

謝謝你的回答。我想知道如果將x僅傳遞給plt.plot – Felix

+0

是否會更快?您的意思是? – Bart

+0

那麼在你的解決方案中x只傳遞一次plt.plot() – Felix

相關問題