首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试器的渲染matplotlib图形

调试器的渲染matplotlib图形
EN

Stack Overflow用户
提问于 2020-04-08 22:36:00
回答 3查看 1.7K关注 0票数 3

无法获得以下代码来完成所有三件事:

在调试breakpoint

  • render处停止
  1. 将图形
  2. 返回到控制台,其图形呈现(在调试器模式下)

代码语言:javascript
复制
import matplotlib.pyplot as plt
from ipdb import set_trace

fig, ax = plt.subplots()
ax.plot(range(10))
plt.show()
set_trace()

同时完成所有三件事情的用例是在一个模块内部进行调试,该模块需要matplotlib可视化中的信息。

从控制台作为IPython运行ipython --pylab只完成(1)和(3)上面的操作,如下所示。在代码中使用plt.ion()也是如此。调试器可用,但可视化不会呈现。

从控制台以ipython的形式运行IPython,或者运行python <script.py>,只完成(1)和(2)上面的操作,如下所示。可视化已呈现,但调试器不可用。

现在我正在使用python 3.7.7matplotlib 3.1.3Qt5Agg后端、ipython 7.13.0ipdb 0.12.3

EN

回答 3

Stack Overflow用户

发布于 2020-04-13 03:56:27

如果使用ion()启用交互模式,则可以在运行python <script.py>时实现它。它将在plot之后立即显示绘图(通过调用draw),并将控件留在set_trace的控制台上。

代码语言:javascript
复制
import matplotlib.pyplot as plt
from ipdb import set_trace

# Enable interactive mode
plt.ion() 
fig, ax = plt.subplots()
# Shown immediately
ax.plot(range(10))
set_trace()
票数 3
EN

Stack Overflow用户

发布于 2020-04-16 11:29:26

场景1

代码语言:javascript
复制
import matplotlib.pyplot as plt
from ipdb import set_trace
fig, ax = plt.subplots()
ax.plot(range(10))
plt.show()
set_trace()

在你的例子中,你

  1. 在ipython中,
  2. 不处于交互模式。

因此,plt.show()会阻止脚本其余部分的执行,直到图形关闭为止。

场景2

代码语言:javascript
复制
import matplotlib.pyplot as plt
from ipdb import set_trace

# Enable interactive mode
plt.ion() 
fig, ax = plt.subplots()
ax.plot(range(10))
# Shown immediately
set_trace()

使用@ mode 444代码,您处于交互式模式。但是,考虑到代码注释,交互模式的工作方式与@ code 444期望的工作方式略有不同。它不会立即强制抽签,但是当控件返回给REPL (在您的例子中是ipython )时,它会强制使用。但是,在进入调试器之前,我们永远不会到达那里。

场景3

代码语言:javascript
复制
import matplotlib.pyplot as plt
from ipdb import set_trace

# Enable interactive mode
plt.ion() 
fig, ax = plt.subplots()
ax.plot(range(10))
plt.show() # or: fig.canvas.draw() or plt.pause()
set_trace()

注释中的@ilke444建议是有效的,因为我们实际上在进入调试器之前强制绘制了图形。

票数 1
EN

Stack Overflow用户

发布于 2021-06-29 09:18:35

在以下情况下,我遇到了类似的问题:我在Pycharm上运行调试模式,并停在某个地方,然后我尝试在调试控制台中运行一个函数,该函数应该使用matplotlib.pyplot绘制图形,但它没有

解决方案是在函数结束时实际删除plt.show(),现在它可以工作了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61111129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档