Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和Matplotlib:在同一图形上快速绘制多个图形_Python_Matplotlib - Fatal编程技术网

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

Python和Matplotlib:在同一图形上快速绘制多个图形,python,matplotlib,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.plo

在相同的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)时,此代码需要相当长的时间。

我怀疑您是否会找到一个更快的解决方案。您可以尝试使用以下方法删除
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..

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

我怀疑您是否能找到一个更快的解决方案。您可以尝试使用以下方法删除
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..

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

每个绘图使用较少的点?10000(
x=np.linspace(0,2*np.pi,1e5)
)似乎有点过度。在我的系统中,每块图上100个点产生的线条与10000个点的线条一样平滑。(没有大型绘图导致的减速)尽管如此,点仍然存在-您真的需要每行
1e5
点吗?每个绘图使用较少的点?10000(
x=np.linspace(0,2*np.pi,1e5)
)似乎有点过度。在我的系统中,每块图上100个点产生的线条与10000个点的线条一样平滑。(没有大型绘图导致的减速)问题仍然存在-您真的需要每行
1e5
点吗?谢谢您的回答。我想知道只将x传递给plt一次是否会更快。plotWell在您的解决方案中,x只传递给plt一次。plot()啊,像这样。。我只是想去掉
plot()
周围的循环,但是在查看matplotlib源代码之后,如果您传递一个2D数组,它看起来仍然存在相同的循环:)谢谢您的回答。我想知道只将x传递给plt一次是否会更快。plotWell在您的解决方案中,x只传递给plt一次。plot()啊,像这样。。我只是想去掉
plot()
周围的循环,但是在查看matplotlib源代码后,如果传递一个2D数组,看起来相同的循环仍然存在:)