当前位置: 首页 > 面试题库 >

如何删除Matplotlib图中的线

郎琪
2023-03-14
问题内容

我该如何删除matplotlib轴的一条线(或多条线),使其实际上收集到垃圾并释放回内存?以下代码似乎删除了该行,但是从不释放内存(即使显式调用gc.collect()

from matplotlib import pyplot
import numpy
a = numpy.arange(int(1e7))
# large so you can easily see the memory footprint on the system monitor.
fig = pyplot.Figure()
ax  = pyplot.add_subplot(1, 1, 1)
lines = ax.plot(a) # this uses up an additional 230 Mb of memory.
# can I get the memory back?
l = lines[0]
l.remove()
del l
del lines
# not releasing memory
ax.cla() # this does release the memory, but also wipes out all other lines.

问题答案:

我正在展示lines.pop(0) l.remove()和结合del l使用的技巧。

from matplotlib import pyplot
import numpy, weakref
a = numpy.arange(int(1e3))
fig = pyplot.Figure()
ax  = fig.add_subplot(1, 1, 1)
lines = ax.plot(a)

l = lines.pop(0)
wl = weakref.ref(l)  # create a weak reference to see if references still exist
#                      to this object
print wl  # not dead
l.remove()
print wl  # not dead
del l
print wl  # dead  (remove either of the steps above and this is still live)

我检查了您的大型数据集,并在系统监视器上也确认了内存的释放。

当然,更简单的方法(当不进行故障排除时)是从列表中弹出它并remove在不创建硬引用的情况下调用该行对象:

lines.pop(0).remove()


 类似资料:
  • 问题内容: 我有一个Semilogx图,我想删除xticks。我试过了: 网格消失(确定),但仍保留小刻度线(在主刻度线的位置)。如何删除它们? 问题答案: 该方法对于这样的事情非常有用。此代码关闭主要和次要刻度线,并从x轴删除标签。

  • 问题内容: 这应该很容易,但是我很难过。基本上,我在matplotlib中有一个子图,每次调用一个函数时,我都会绘制一个六边形图,但是每次调用该函数时,都会得到一个新的颜色条,所以我真正想做的就是更新颜色条。不幸的是,这似乎不起作用,因为通过subplot.hexbin重新创建了附加了颜色条的对象。 我现在在这个烦人的地方,尝试完全删除颜色条轴,然后重新创建它。不幸的是,当我删除颜色条轴时,子图轴

  • 我正在matplotlib中使用子图。因为我的所有子图都有相同的x轴,所以我只想在底部图上标记x轴。如何仅从一个轴移除XTIC?

  • 我用Matplotlib做了一个条形图,调用如下: 我得到一个条形图,看起来像这样: 我想要的是在连续的条之间没有空白,例如,更像这样: 有没有办法在Matplotlib中使用函数来实现这一点?

  • 问题内容: 我想删除多条线图中的特定线。贝娄是一个给我的例子,这对我来说还不够,因为它仅删除最后绘制的线条,而不删除我要删除的线条。我怎样才能做到这一点?如何在整个程序中寻址特定行(按名称,编号,参考)并删除该行? 问题答案: 几乎所有的绘图功能都返回对先前创建的对象的引用: 如果您有参考文献,则可以通过 (doc)函数ex删除艺术家:

  • 我有一个semilogx情节,我想删除xticks。我试过: