gpt4 book ai didi

python - "OverflowError: Allocated too many blocks":

转载 作者:太空狗 更新时间:2023-10-29 17:34:41 29 4
gpt4 key购买 nike

在发这个问题之前,我检查了所有可能重复的问题,尝试了所有的方法仍然无法解决问题。

我在 matplotlib 中有一个简单的绘图。当我注释掉调用 plt.fill_between() 的行时,代码可以完美运行,但是当我取消注释时,它会抛出溢出错误。

注意:这个错误发生在我的 Ubuntu 15.10 笔记本上
但是在 MacOS 中我尝试了相同的代码并且没有显示错误(令人惊讶!)

更新:我将后端用作 TkAgg。

print(mpl.rcParamsDefault)
# Answer is agg.

我的代码如下所示:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Author : Bhishan Poudel
# Date : Mar 28, 2016
# Topic : OverflowError: Allocated too many blocks
# Note : python --version ==> Python 2.7.10
# Note : lsb_release -a ==> ubuntu 15.10

# Imports
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# plot values
x = np.arange(0.001, 25.0, 0.01)
A = 4.3
y = np.array( (-1.0/x) + (0.5*A*A/(x**2)) - (A*A/(x**3)) )

# Plots
plt.plot(x,y,color='k')

# Set axes limits
plt.ylim(-0.04,0.06)

# Attempt to resolve OverflowError
plt.rcParams['backend'] = 'TkAgg' # or, 'qt4agg'
plt.rcParams['agg.path.chunksize'] = 100000
# This did not worked!

# Fill the color
plt.fill_between(x, -0.04, y, color='darkgray', alpha=.5)
# If I comment this line there will be no error!

# Show the plot
plt.show()

我试过的链接如下:

Matplotlib OverflowError: Allocated too many blocks
pyplot savefig allocating too many blocks
http://matplotlib.org/1.3.1/users/customizing.html

https://github.com/matplotlib/matplotlib/issues/5907
https://github.com/matplotlib/matplotlib/blob/master/matplotlibrc.template

通过这些链接后,我最初的尝试是这样的:

# Attempt to resolve OverflowError
plt.rcParams['backend'] = 'TkAgg' # or, 'qt4agg'
plt.rcParams['agg.path.chunksize'] = 100000
# This did not worked!

尝试#2:
我创建了一个文件 ~/.matplotlib/matplotlibrc然后在其中放置以下代码:

agg.path.chunksize : 10000        # 0 to disable; values in the range
# 10000 to 100000 can improve speed slightly
# and prevent an Agg rendering failure
# when plotting very large data sets,
# especially if they are very gappy.
# It may cause minor artifacts, though.
# A value of 20000 is probably a good
# starting point.

尝试 #3:我还安装了模块 seaborn

sudo -H pip install seaborn

并研究了一些文档。
https://stanford.edu/~mwaskom/software/seaborn/tutorial.html
但是,我也找不到解决此问题的方法。

更新:
报错如下:

bhishan@poudel:~/OneDrive/Programming/Python/pyprograms/plotting/matplotlib_customization$ /bin/sh /tmp/geany_run_script_R6KUEY.sh
/usr/lib/python2.7/dist-packages/matplotlib/collections.py:571: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
if self._edgecolors == str('face'):
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_qt5.py", line 338, in resizeEvent
self.draw()
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_qt5agg.py", line 148, in draw
FigureCanvasAgg.draw(self)
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 469, in draw
self.figure.draw(self.renderer)
File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/figure.py", line 1079, in draw
func(*args)
File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/axes/_base.py", line 2092, in draw
a.draw(renderer)
File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/collections.py", line 751, in draw
Collection.draw(self, renderer)
File "/usr/lib/python2.7/dist-packages/matplotlib/artist.py", line 59, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/matplotlib/collections.py", line 293, in draw
mpath.Path(offsets), transOffset, tuple(facecolors[0]))
File "/usr/lib/python2.7/dist-packages/matplotlib/backends/backend_agg.py", line 124, in draw_markers
return self._renderer.draw_markers(*kl, **kw)
OverflowError: Allocated too many blocks


------------------
(program exited with code: 0)

更新:所需绘图如下图:
enter image description here

最佳答案

我无法在我的计算机上重现您的错误,但是如果您想更改 matplotlib 的后端,最好在导入 pyplot 之前进行。

尝试:

import numpy as np
import matplotlib as mpl
mpl.use('TkAgg') # I'd advise testing 'Gtk3Agg' or 'Qt4Agg' (or 5) instead
import matplotlib.pyplot as plt
print(mpl.get_backend()) # check that the change occurred

编辑: 好的,我发现了问题,这是因为你的函数几乎发散了,所以 matplotlib 认为它有一个巨大的表面要覆盖...尝试:

plt.fill_between(x, -0.04, np.clip(y,-0.04,0.06))

关于python - "OverflowError: Allocated too many blocks":,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275288/

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