Python和Matplotlib:快速绘制同一图形上的多个图形

时间:2016-06-13 10:31:53

标签: python matplotlib

是否有更快的方法在相同的x范围内绘制多条曲线而不是以下?

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)

时,此代码需要相当长的时间

1 个答案:

答案 0 :(得分: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..

对于少量线路,这似乎要快一点,但对于您的问题大小,它与原始解决方案一样快/慢。