2016-06-13 165 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

相关问题