相关疑难解决方法(0)

何时使用cla(),clf()或close()清除matplotlib中的图?

Matplotlib提供以下功能:

cla()   # Clear axis
clf()   # Clear figure
close() # Close a figure window
Run Code Online (Sandbox Code Playgroud)

该文档没有提供很多关于这些功能之间的区别的见解.我什么时候应该使用每个功能,它究竟做了什么?

plot matplotlib

492
推荐指数
3
解决办法
62万
查看次数

有没有办法分离matplotlib图,以便计算可以继续?

在Python解释器中的这些指令之后,获得一个带有绘图的窗口:

from matplotlib.pyplot import *
plot([1,2,3])
show()
# other code
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道如何继续以交互方式探索show()在程序进行进一步计算时创建的图形.

有可能吗?有时计算很长,如果他们在检查中间结果期间继续进行计算会有所帮助.

python plot matplotlib

242
推荐指数
11
解决办法
21万
查看次数

如何使用matplotlib在while循环中实时绘图?

我试图使用OpenCV实时绘制来自摄像机的一些数据.但是,实时绘图(使用matplotlib)似乎不起作用.

我把这个问题分成了这个简单的例子:

fig = plt.figure()
plt.axis([0, 1000, 0, 1])

i = 0
x = list()
y = list()

while i < 1000:
    temp_y = np.random.random()
    x.append(i)
    y.append(temp_y)
    plt.scatter(i, temp_y)
    i += 1
    plt.show()
Run Code Online (Sandbox Code Playgroud)

我希望这个例子可以单独绘制1000个点.实际发生的是窗口弹出第一个点显示(确定),然后在填充图表的其余部分之前等待循环完成.

有什么想法,为什么我没有看到一次填充一个点?

python real-time matplotlib while-loop

211
推荐指数
11
解决办法
44万
查看次数

input()error - NameError:name'...'未定义

我尝试运行这个简单的python脚本时收到错误:

input_variable = input ("Enter your name: ")
print ("your name is" + input_variable)
Run Code Online (Sandbox Code Playgroud)

让我说我输入"dude",我得到的错误是:

line 1, in <module>
input_variable = input ("Enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'dude' is not defined
Run Code Online (Sandbox Code Playgroud)

我正在运行Mac OS X 10.9.1,我正在使用安装python 3.3附带的Python Launcher应用程序来运行脚本.

编辑:我意识到我用2.7运行这些脚本.我想真正的问题是我如何使用3.3版运行我的脚本?我想如果我将我的脚本拖放到我的应用程序文件夹中的Python 3.3文件夹内的Python Launcher应用程序之上,它将使用3.3启动我的脚本.我想这个方法仍然用2.7启动脚本.那么我如何使用3.3?

python input nameerror python-2.7

193
推荐指数
8
解决办法
60万
查看次数

Pycharm没有显示情节

Pycharm不显示以下代码的图:

import pandas as pd
import numpy as np
import matplotlib as plt

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()    
ts.plot()
Run Code Online (Sandbox Code Playgroud)

会发生什么是窗口出现不到一秒钟,然后再次消失.

在相同的代码上使用Pyzo IEP IDE(使用相同的解释器),该图显示了预期.

...所以问题必须是Pycharm的一些设置.我已经尝试使用python.exe和pythonw.exe作为解释器,两者具有相同的结果.

这是我的sys_info:

C:\pyzo2014a\pythonw.exe -u C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevconsole.py 57315 57316
PyDev console: using IPython 2.1.0import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, 13:02:30) [MSC v.1600 64 bit (AMD64)] on win32
sys.path.extend(['C:\\Users\\Rasmus\\PycharmProjects\\untitled2'])
In[3]: import IPython
print(IPython.sys_info())
{'commit_hash': '681fd77',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pycharm

80
推荐指数
11
解决办法
12万
查看次数

Matplotlib:将绘图保存为numpy数组

在Python和Matplotlib中,很容易将绘图显示为弹出窗口或将绘图保存为PNG文件.我怎样才能将绘图保存为RGB格式的numpy数组?

python numpy matplotlib

31
推荐指数
6
解决办法
3万
查看次数

R Markdown:如何使RStudio显示内联而不是新窗口的Python图?

所以,我最后一直广泛使用R Markdown,我对它的功能非常满意.

但是,我遇到了python图的问题.我有一大块python代码,我在python中绘制多个数字.

当我使用R执行此操作时,RStudio将显示此块中生成的所有绘图并排.

不幸的是,当用一大块python代码做同样的事情时,RStudio会打开一个新窗口显示图表,然后代码执行停止,直到我关闭该窗口,然后它绘制下一个图,我必须再次关闭它,等等

是否有可能强制RStudio将数字内联,然后继续执行代码?感谢您的帮助!

python r rstudio r-markdown

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

如何在Python中使用Matplotlib?

当我线程matplotlib并且我不经常关闭图形窗口(通过鼠标 - 关闭窗口按钮)时,我收到以下错误:

Exception RuntimeError: RuntimeError('main thread is not in main loop',) in <bound method PhotoImage.__del__ of <Tkinter.PhotoImage instance at 0x7ff408080998>> ignored Exception RuntimeError: RuntimeError('main thread is not in main loop',) in <bound method PhotoImage.__del__ of <Tkinter.PhotoImage instance at 0x7ff3fbe373f8>> ignored
                                                                   Tcl_AsyncDelete: async handler deleted by the wrong thread
                                                                                                                             Aborted
Run Code Online (Sandbox Code Playgroud)

我做什么:我有一个主循环调用实例的方法.该matplotlib方法由该实例的init函数进行线程化.我不能matplotlib在实例中调用方法,我不知道为什么,所以我通过__init__以下方式调用它:

def __init__(self):
....
thread = threading.Thread(target=self.drawcharts, args=())
        thread.daemon = False                            
        thread.start()
Run Code Online (Sandbox Code Playgroud)

线程方法:

def drawcharts(self):

        global endthread

        ..do some math..

        try:

            plt.plot(k)
            plt.plot(x1)
            plt.plot(x2) …
Run Code Online (Sandbox Code Playgroud)

python plot multithreading matplotlib

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

非阻塞 Matplotlib 动画

我想与我的主程序同时运行 FuncAnimation ,不幸的是,它阻止了MainProgram我所做的任何事情的执行。

我试过了:

  1. plt.show(block=False)程序继续,但绘图显示空白
  2. 返回动画并存储在变量中 -MainProgram被阻止
  3. 两者:MainProgram运行但绘图窗口为空白

我知道这个问题,但是,我认为考虑到动画的使用,所提供的解决方案是不合适的。

使用 Matplotlib 以非阻塞方式绘图

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import time

def runGraph():
    # Parameters
    x_len = 200         # Number of points to display
    y_range = [10, 40]  # Range of possible Y values to display

    # Create figure for plotting
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    xs = list(range(0, 200))
    ys = [0] * x_len …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

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

asyncio matplotlib show() 仍然冻结程序

我希望运行一个模拟,同时在一个 plot 中输出它的进度。我一直在查看很多线程和多处理的示例,但它们都非常复杂。所以我认为使用 Python 的新asyncio库应该会更容易。

我找到了一个例子(How to use 'yield' inside async function?)并为我的原因修改了它:

import matplotlib.pyplot as plt
import asyncio
import numpy as np


class DataAnalysis():
    def __init__(self):
        # asyncio so we can plot data and run simulation in parallel
        loop = asyncio.get_event_loop()
        try:
            loop.run_until_complete(self.plot_reward())
        finally:
            loop.run_until_complete(
                loop.shutdown_asyncgens())  # see: https://docs.python.org/3/library/asyncio-eventloop.html#asyncio.AbstractEventLoop.shutdown_asyncgens
            loop.close()

    async def async_generator(self):
        for i in range(3):
            await asyncio.sleep(.4)
            yield i * i

    async def plot_reward(self):
        # Prepare the data
        x = …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-3.x python-asyncio

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

当我在 python 中绘制某些内容时,程序执行会停止,直到我关闭绘图图

这是我的代码,在计算了一些东西之后,我希望它在每一步都绘制它们

import time
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
FilePatch='E:\\# Civil Engineering Undergraduate\\Projects\\Python\\Frame'
NodesFile=FilePatch+'\\nodes.xlsx'
MemsFile=FilePatch+'\\members.xlsx'
MatsFile=FilePatch+'\\sections.xlsx' 

nodes=pd.read_excel(NodesFile)

mems=pd.read_excel(MemsFile)
mats=pd.read_excel(MatsFile)

nodes=np.array(nodes)
mems=np.array(mems)
mats=np.array(mats)

np.nan_to_num(nodes)
np.nan_to_num(mems)
np.nan_to_num(mats)

Segments=100
Scale=1

n=np.size(nodes[:,0])
m=np.size(mems[:,0]) 
UsedEIA=np.zeros((m,3)) 
.
.
.
Run Code Online (Sandbox Code Playgroud)

但问题是,当它第一次调用 plt.plot(...) 时,它会停止执行,并且除非我关闭图形,否则不会继续执行!这个问题有什么解决办法吗??

. 
. 
.

for i in range(1,1+n):
    dx=Scale*D[3*i-3,0] 
    dy=Scale*D[3*i-2,0] 
    xn=nodes[nodes[:,0]==i,1]+dx 
    yn=nodes[nodes[:,0]==i,2]+dy 
    plt.text(xn,yn,str(i))
    s=np.sum(nodes[nodes[:,0]==i,3:5]) 
    if nodes[nodes[:,0]==i,5]==1:
        plt.scatter(xn,yn,c='r',marker='s')
    elif nodes[nodes[:,0]==i,3]==1 or nodes[nodes[:,0]==i,4]==1:
        plt.scatter(xn,yn,c='g',marker='^')    
    plt.axis('equal')
    plt.show()
    time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

我还想在我的图中添加一些文本,但它给了我一个我无法理解的错误!这里是:

p=mems[i,4] 
px=mems[i,3] 
dl=mems[i,5]*L 
w=mems[i,6]


xtxt=(FrameShape[0,0]+FrameShape[0:])/2 
ytxt=(FrameShape[1,0]+FrameShape[1:])/2 
xtxtp=FrameShape[0,0] 
xtxtpx=FrameShape[0,0]+abs(px)/(1+abs(p)) 
xtxtw=FrameShape[0,0]+abs(p)/(1+abs(p))+abs(px)/(1+abs(px)) 

if p!=0 or px!=0: …
Run Code Online (Sandbox Code Playgroud)

python animation data-visualization matplotlib jquery-animate

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