gpt4 book ai didi

python - 如何解决 matplotlib 中的溢出错误?

转载 作者:行者123 更新时间:2023-11-30 22:11:18 26 4
gpt4 key购买 nike

我正在使用 scipy.integrate 中的 odeint 包求解一组耦合微分方程。

对于整合时间,我有:

 t=numpy.linspace(0,8e+9,5e+06)

其中 5e+06 是时间步长。

然后我画出我的方程:

plt.xscale('symlog') #x axis logarithmic scale
plt.yscale('log',basey=2) #Y axis logarithmic scale
plt.gca().set_ylim(8, 100000) #Changing y axis ticks
ax = plt.gca()
ax.yaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
ax.xaxis.set_major_formatter(matplotlib.ticker.ScalarFormatter())
plt.title("Example graph")
plt.xlabel("time (yr)")
plt.ylabel("quantity a")
plt.plot(t,a,"r-", label = 'Example graph')
plt.legend(loc='best')

其中 a 是时间相关变量。 (这只是众多图表中的一张。)

但是,图表看起来有点锯齿状,而不是振荡,我收到此错误:

OverflowError: Exceeded cell block limit (set 'agg.path.chunksize' rcparam)

我不太确定这个错误意味着什么,我看过其他答案,但不知道如何实现“agg.path.chunksize”。

此外,集成 + 绘图大约需要 7 个小时,而且还需要一些 CPU 处理技巧,所以我真的不想实现任何会增加时间的东西。

如何克服这个错误?

我尝试减少时间步长,但是却收到此错误:

Excess work done on this call (perhaps wrong Dfun type).
Run with full_output = 1 to get quantitative information.

最佳答案

如错误消息所示,您可能 set the chunksize to a larger value .

plt.rcParams['agg.path.chunksize'] = 1000

但是,您也可能会批判性地反射(reflection)为什么会出现此错误。仅当您尝试在图表上绘制不合理的大量数据时才会发生这种情况。这意味着,如果您尝试绘制 200000000 个点,渲染器可能会遇到将它们全部保留在内存中的问题。但人们也许应该问自己,为什么有必要绘制这么多点?一个屏幕可以横向显示大约 2000 个点,一张打印纸可能会显示 6000 个点。一般来说,使用更多的点是没有意义的。

现在,如果微分方程的解需要较大的点密度,并不意味着您需要将它们全部绘制出来。

例如人们可以每隔 100 个点绘制一次,

plt.plot(x[::100], y[::100])

很可能甚至不会影响视觉图的外观。

关于python - 如何解决 matplotlib 中的溢出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51461298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com