相关疑难解决方法(0)

关于太多公开数字的警告

在我创建许多数字的脚本中fix, ax = plt.subplots(...),我收到警告RuntimeWarning:已打开超过20个数字.通过pyplot接口(matplotlib.pyplot.figure)创建的数字将保留,直到明确关闭,并可能消耗太多内存.

但是,我不明白为什么我得到这个警告,因为保存图后fig.savefig(...),我删除它fig.clear(); del fig.我的代码中没有任何一点,我一次打开多个数字.尽管如此,我还是得到了关于太多公开数字的警告.这是什么意思/如何避免收到警告?

python matplotlib python-3.x

128
推荐指数
3
解决办法
7万
查看次数

使用Matplotlib以非阻塞方式绘图

在过去的几天里,我一直在玩Numpy和matplotlib.我在尝试使matplotlib绘制函数而不阻塞执行时遇到问题.我知道在这里已经有很多线索提出了类似的问题,而且我已经搜索了很多但是没有设法让这项工作成功.

我曾经尝试过使用show(block = False),但我得到的只是一个冻结的窗口.如果我只是调用show(),则会正确绘制结果,但会阻止执行直到窗口关闭.从我读过的其他主题,我怀疑show(block = False)是否有效取决于后端.它是否正确?我的后端是Qt4Agg.你能看看我的代码并告诉我你是否看错了吗?这是我的代码.谢谢你的帮助.

from math import *
from matplotlib import pyplot as plt
print plt.get_backend()



def main():
    x = range(-50, 51, 1)
    for pow in range(1,5):   # plot x^1, x^2, ..., x^4

        y = [Xi**pow for Xi in x]
        print y

        plt.plot(x, y)
        plt.draw()
        #plt.show()             #this plots correctly, but blocks execution.
        plt.show(block=False)   #this creates an empty frozen window.
        _ = raw_input("Press [enter] to continue.")


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

PS.我忘了说我想在每次绘制内容时更新现有窗口,而不是创建一个新窗口.

python plot matplotlib

106
推荐指数
6
解决办法
10万
查看次数

创建一个引用计数的数字

似乎在matplotlib中创建一个图形的标准方法并不像我在python中所期望的那样:默认情况下fig = matplotlib.figure(),在循环中调用将保留所有创建的数字,并最终耗尽内存.

相当 ,其处理的解决方法职位,但需要显式调用matplotlib.pyplot.close(fig)似乎有点hackish.我想要的是一个简单的方法来fig计算引用,所以我不必担心内存泄漏.有办法做到这一点吗?

python memory-management matplotlib

24
推荐指数
2
解决办法
7398
查看次数

如何完全清除所有Matplotlib图的记忆

我有数据分析模块,其中包含多次调用Matplotlib pyplot API的函数,每次运行时最多可生成30个数字.这些数字在生成后会立即写入磁盘,因此我需要从内存中清除它们.目前,在我的每个功能结束时,我都这样做

import matplotlib.pyplot as plt

plt.clf()
Run Code Online (Sandbox Code Playgroud)

但是我不太确定这个陈述是否能真正清除记忆.我特别担心,因为我看到每次运行模块进行调试时,我的可用内存空间不断减少.任何人都可以告诉我,在我将这些图写入磁盘后,每次我需要做些什么才能真正清除我的记忆?

谢谢.

python memory matplotlib

19
推荐指数
4
解决办法
1万
查看次数

在Mac OS X上使用键盘关闭pyplot图

有没有办法使用键盘关闭OS X中的pyplot数字(据我所知,你只能通过点击窗口关闭按钮关闭它)?

我尝试了很多关键组合,比如command-Q,command-W和类似的组合,但它们都没有在我的系统上运行.

我也试过这个代码贴在这里:

#!/usr/bin/env python

import matplotlib.pyplot as plt

plt.plot(range(10))

def quit_figure(event):
    if event.key == 'q':
        plt.close(event.canvas.figure)

cid = plt.gcf().canvas.mpl_connect('key_press_event', quit_figure)

plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,上述内容在OS X上也不起作用.我尝试将print语句添加到quit_figure,但似乎从未调用过.

我正在尝试使用最新的公共OS X,matplotlib版本1.1.1以及OS X(2.7.3)附带的标准Python.有想法该怎么解决这个吗?每次必须触及鼠标是非常烦人的.

python matplotlib osx-mavericks

16
推荐指数
2
解决办法
4664
查看次数

Matplotlib 在保存许多绘图后崩溃

我正在循环绘制并保存数千个文件以供以后的动画使用,如下所示:

import matplotlib.pyplot as plt
for result in results:
    plt.figure()
    plt.plot(result)                     # this changes
    plt.xlabel('xlabel')                 # this doesn't change
    plt.ylabel('ylabel')                 # this doesn't change
    plt.title('title')                   # this changes
    plt.ylim([0,1])                      # this doesn't change
    plt.grid(True)                       # this doesn't change
    plt.savefig(location, bbox_inches=0) # this changes
Run Code Online (Sandbox Code Playgroud)

当我运行它并获得大量结果时,它会在保存数千个图后崩溃。我想我想做的是重用我的轴,就像这个答案一样: https: //stackoverflow.com/a/11688881/354979,但我不明白如何。我该如何优化它?

python matplotlib

6
推荐指数
1
解决办法
3183
查看次数

为什么Matplotlib savefig图像重叠?

我在python中构建了一个使用Tkinter的GUI应用程序.

单击按钮时,此应用程序会生成并显示图像.

使用matplotlib savefig("displayimage.png")在与我的app .py文件相同的文件夹中生成图像.

第一次按下按钮时显示图像正常,但第二次按下时,新图像与旧图像重叠.

我尝试通过os.remove("displayimage.png")从文件夹中删除现有图像,但这根本没有帮助.

你知道为什么它不会覆盖旧图像而不是重叠吗?

PS.我试过保存为.jpg,但结果相同.

提前致谢.码:

# make a square figure and axes
figure(1, figsize=(6, 6))
ax = axes([0.1, 0.1, 0.8, 0.8])

# The slices will be ordered and plotted counter-clockwise.
labels = words
fracs = percent
colors = ('yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'blue', 'yellow', 'cyan', 'pink',
          'purple', 'green', 'magenta', 'orange')

pie(fracs, labels=labels, colors=colors,
    autopct='%.1f%%', shadow=True, startangle=90)

title("Most used words", fontsize=20)

savefig('senalyzed_piechart.png',dpi=80)
Run Code Online (Sandbox Code Playgroud)

python user-interface tkinter matplotlib

5
推荐指数
1
解决办法
3623
查看次数

如何清除 Python/matplotlib 内存?

Python 在用 pyplot 绘制了一些图形后出现了内存错误(我在笔记本电脑上绘制了超过一百万个点的图形 - 在错误与点的数量直接相关之前可以绘制多少个图形)。

之后如何清除内存,以便我可以绘制更多图形?现在唯一的选择是ctrl + .重新启动内核。

我已经尝试了推荐的:

matplotlib.pyplot.close("all")
matplotlib.pyplot.clf()
Run Code Online (Sandbox Code Playgroud)

不清除错误。

python memory matplotlib

5
推荐指数
1
解决办法
4419
查看次数

清除Matplotlib中的子图

我有一些图中的子图fig1,通过创建

ax = fig1.add_subplot(221)
Run Code Online (Sandbox Code Playgroud)

然后,我通过每个子图绘制内容

im=ax.plot(x,y)
Run Code Online (Sandbox Code Playgroud)

并通过添加一些轴标签

ax.set_xlabel('xlabel')
Run Code Online (Sandbox Code Playgroud)

然后我想完全清除一个特定的子图,如何使用cla(),clf()或close()来清除matplotlib中的图?.然而问题是,ax.cla()并且ax.clear()似乎只清除了绘图中的数据,而没有移除轴,轴刻度标签等.另一方面plt.clf()清除整个图形.介于两者之间吗?类似clf的命令可以清除子图中的所有内容,包括轴标签?或者我只是以错误的方式使用命令?

matplotlib subplot

5
推荐指数
1
解决办法
7604
查看次数

如何"清理石板"?

我想制作一系列图表,并将每个图表保存到文件中.但我不知道如何擦掉以前的情节.也许我需要每次都创建一些新对象,但我不会是哪个对象.这是我的代码,注意评论.这是我的代码:

import matplotlib.pyplot as plt
ind = (1,2,3,4)
groups=(
  (1, (1.1,1.2,1.3,1.4)),
  (2, (2.2,2.2,1.2,2.4)),
)

for group in reversed(groups):
  #clean the slate ?
  plt.bar(ind   ,group[1])
  plt.xticks([i+0.5 for i in ind],ind)
  plt.savefig('%d.png' % group[0])
Run Code Online (Sandbox Code Playgroud)

matplotlib

3
推荐指数
1
解决办法
2478
查看次数

如何清除 PyQt 中的情节?

我使用 QT Designer 在 PyQt 中创建了一个小应用程序。我有一些按钮,“绘图”按钮在 4 个不同的小部件上创建 4 个绘图。“清除”按钮必须清除这 4 个图。我尝试编写一些代码,但它没有运行。如何创建这个清除按钮?谢谢你。

这是我的应用程序的主要内容:

import sys
from Import_fsa import import_fsa
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QFileDialog
from Vannucci_Gemignani import Ui_MainWindow


class GUI_fsa(QtGui.QMainWindow):
    def __init__(self):

        QtGui.QMainWindow.__init__(self)
        self.ui=Ui_MainWindow()
        self.ui.setupUi(self)

        self.ui.Button_Browse.clicked.connect(self.Browse)
        self.ui.Button_Plot.clicked.connect(self.Plot)
        self.ui.Button_Clear.clicked.connect(self.Clear)

    def Browse(self):

        fname=QFileDialog.getOpenFileName()
        if fname=='':  #se non viene selezionato nessun file, fname è
            return     #nullo, generando quindi un errore nell'import fsa

        self.ui.lineEdit.setText(fname)




    def Plot(self):
        if self.ui.lineEdit.text()=='':
            QtGui.QMessageBox.information(None,'Warning','Select fsa File',QtGui.QMessageBox.Ok)
            return

        data_set=import_fsa(self.ui.lineEdit.text())        

        self.ui.widget.canvas.ax.clear()
        self.ui.widget_2.canvas.ax.clear()
        self.ui.widget_3.canvas.ax.clear()
        self.ui.widget_4.canvas.ax.clear()

        self.ui.widget.canvas.ax.plot(data_set[0])
        self.ui.widget_2.canvas.ax.plot(data_set[1])
        self.ui.widget_3.canvas.ax.plot(data_set[2]) …
Run Code Online (Sandbox Code Playgroud)

python plot qt pyqt4

1
推荐指数
1
解决办法
9384
查看次数

如何删除或关闭 matplotlib 中的图形?

如何删除或关闭图表?

我定义了一个函数来绘制图形。但是,每当我更改变量并关闭 matplotlib 窗口并绘制新图形时,不会删除之前的图形。下面是我的程序:

def graphforcevsmass():

 global velocityvalue
 global radiusvalue 

 for i in range(101):
    j = i * float(int(velocityvalue) ** 2 / int(radiusvalue))

    x.append(i)
    y.append(j)

 plt.plot(x, y)
 plt.draw()
Run Code Online (Sandbox Code Playgroud)

在我的程序中,我使用了一个按钮来激活上面的功能,变量将根据 tkinter 窗口中的比例而变化。(我正在使用 tkinter 和 matplotlib 模块在 enthought canopy 中编码 python)

python matplotlib

0
推荐指数
1
解决办法
3712
查看次数