在过去的几天里,我一直在玩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.我忘了说我想在每次绘制内容时更新现有窗口,而不是创建一个新窗口.
这是我所追求的MWE,改编自这个问题:
from matplotlib.pyplot import plot, draw, show
def make_plot():
plot([1,2,3])
draw()
print 'continue computation'
print('Do something before plotting.')
# Now display plot in a window
make_plot()
answer = raw_input('Back to main and window visible? ')
if answer == 'y':
print('Excellent')
else:
print('Nope')
show()
Run Code Online (Sandbox Code Playgroud)
我想要的是:我调用函数来创建绘图,出现绘图窗口,然后我回到提示符,这样我就可以输入一些值(基于刚才显示的图像)并继续执行代码(窗口可以关闭或保持在那里,我不在乎).
我得到的是,带有绘图的窗口仅在代码完成后出现,这是不好的.
我尝试了以下相同的结果,绘图窗口出现在代码的末尾而不是之前:
from matplotlib.pyplot import plot, ion, draw
ion() # enables interactive mode
plot([1,2,3]) # result shows immediately (implicit draw())
# at the end call show to ensure window …Run Code Online (Sandbox Code Playgroud) 我使用matplotlib绘制图表和图形.
当我使用命令绘制图表时,show()我的代码会阻止此命令.
我想用新数据刷新我的值列表,然后刷新背景图像.如何在没有每次关闭窗口的情况下关闭图表?以下是我正在使用的代码
import pylab
a = (1,2,3,4)
pylab.plot(a)
pylab.show() # blocks here
Run Code Online (Sandbox Code Playgroud) 所以,我最后一直广泛使用R Markdown,我对它的功能非常满意.
但是,我遇到了python图的问题.我有一大块python代码,我在python中绘制多个数字.
当我使用R执行此操作时,RStudio将显示此块中生成的所有绘图并排.
不幸的是,当用一大块python代码做同样的事情时,RStudio会打开一个新窗口显示图表,然后代码执行停止,直到我关闭该窗口,然后它绘制下一个图,我必须再次关闭它,等等
是否有可能强制RStudio将数字内联,然后继续执行代码?感谢您的帮助!
在从matplotlib绘图后,我从交互式python中的键盘中断Ctrl+ C(在xterm中运行)得到不一致的响应.
正如所料,当在ipython2中执行Ctrl+ 时,C我得到了KeyboardInterrupt消息.
但是,一旦我使用matplotlib(特别是matplotlib.pyplot)绘制任何内容,Ctrl+ C将退出交互式python会话,而不是在交互式python会话中退出正在运行的脚本(如果有的话).
一个原始的例子.
import numpy as n
import matplotlib.pyplot as m
x = n.linspace(0,4*n.pi,500)
y = x**2*n.sin(x)
m.plot(x,y)
m.show()
Run Code Online (Sandbox Code Playgroud)
优先行为是Ctrl+ C总是只中断正在运行的脚本(如果有的话),而不是交互式python会话本身.
我是新手,为我的Python代码使用PTVS.我之前使用过Spyder和Anaconda发行版一起使用.这是我遇到的问题.
我正在尝试创建两个图,并在同一时间在单独的窗口中显示它们.一个简单的例子是.
import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5])
plt.show()
plt.plot([2,2,2,2,2])
plt.show()
Run Code Online (Sandbox Code Playgroud)
但除非我关闭第一个情节,否则第二个情节不会出现.类似地,对于更大的脚本,如果我不关闭绘图,则plt.show()之后的其余代码块不会执行.我尝试执行没有调试,它不起作用.但是,当我在Ipython交互式窗口中运行相同的代码时,所有代码都会执行,我可以看到这两个图都是内联的,但它不是我想要的.我希望所有代码能够在不同窗口中根据需要运行创建尽可能多的绘图而不会中断,例如关闭其余代码运行的绘图.我仍然可以在Spyder中做到这一点,但我想完全切换到Visual Studio,这个问题让我烦恼.
任何帮助,将不胜感激.提前致谢.
我想用multiprocessing模块来完成这个.
当我这样做时,像:
$ python my_process.py
Run Code Online (Sandbox Code Playgroud)
我启动一个父进程,然后让父进程生成一个子进程,
然后我希望父进程退出,但子进程继续工作.
请允许我写一个错误的代码来解释自己:
from multiprocessing import Process
def f(x):
with open('out.dat', 'w') as f:
f.write(x)
if __name__ == '__main__':
p = Process(target=f, args=('bbb',))
p.daemon = True # This is key, set the daemon, then parent exits itself
p.start()
#p.join() # This is WRONG code, just want to exlain what I mean.
# the child processes will be killed, when father exit
Run Code Online (Sandbox Code Playgroud)
那么,如何在父进程完成时启动一个不会被杀死的进程?
20140714
嗨,你们
我的朋友告诉我一个解决方案......
我只是想...
无论如何,只是让你看看:
import os
os.system('python your_app.py&') …Run Code Online (Sandbox Code Playgroud) 我想让python制作一个绘图,在不阻塞控制流的情况下显示它,并在代码退出后保持打开.这可能吗?
这个以及相关的主题在许多其他主题中都存在(见下文),但是我无法让这个情节保持开放,并且是非阻塞的.例如,如果我pyplot.ion()之前使用过pyplot.show(),或者如果我使用,pyplot.show(block=False)那么当代码终止时,该图将关闭.这是真的使用python或ipython.如果重要的话,我正在运行OS X 10.8.2(Mountain Lion),运行python27和ipython27
相关讨论:
pylab matplotlib"show"等到窗口关闭
有没有办法分离matplotlib图,以便计算可以继续?
在Matplotlib Closing pyplot窗口中保持绘图窗口打开
看完之后plt.show(),我只想继续。但需要关闭弹出图。我该怎么做才能跳过该操作?
这是我的代码:
plt.show()
time.sleep(1)
plt.close('all')
Run Code Online (Sandbox Code Playgroud)
其他代码
还有一个关于如何最大化数字制作的问题plt.show()
我使用python和matplotlib进行科学编程.但每当我使用命令show()显示绘图时,脚本就会停在那里.我必须关闭脚本的图形窗口才能继续执行.有没有办法让图形窗口打开时保持脚本运行,就像在Matlab中一样?
python ×10
matplotlib ×8
plot ×2
enthought ×1
ipython ×1
linux ×1
ptvs ×1
r ×1
r-markdown ×1
rstudio ×1