在Pycharm中调试Matplotlib:如何关闭交互模式?

时间:2018-03-14 18:07:37

标签: python macos matplotlib pycharm python-interactive

首先,我正在研究Pycharm调试控制台,并希望在我的图表下添加标题。根据{{​​3}},这可以通过以下方式实现:

plt.plot([2,5,1,2]
fig = plt.figure()
fig.text(.5, .05, "text", ha="center")
plt.show()

然而,这首先显示的是情节,然后是一个空窗口(在输入第二行之后),后来没有显示。

我发现这一定是因为matplotlib的交互模式所以我在调试会话中使用plt.ioff()将其关闭,之后plt.isinteractive()返回False。这仍然不会改变其行为,并在plt.plot(...)命令后立即显示情节。

当我在我的脚本中添加plt.ioff()时,它会被忽略,plt.isinteractive()会返回True

import matplotlib.pyplot as plt

plt.ioff()
plt.plot([1,2,3,4,5])
print(plt.isinteractive())

我的系统信息:

  • PyCharm CE 2017.3.2
  • macOS Sierra 10.12.6
  • Anaconda环境中的Python 3.6.3

任何人都可以重现这个吗?还有另一种方法可以从Pycharm调试控制台创建更复杂的图表吗?我希望每次想要绘制更复杂的东西时都不要改变我的开发环境。

1 个答案:

答案 0 :(得分:1)

回答你的问题:使用不同的(非交互式)后端:

view.setOnKeyPressed(new EventHandler<KeyEvent>() {
    @Override
    public void handle(KeyEvent event) {
        switch (event.getCode()) {
            case UP:
                event.consume();
                System.out.println("Test");
                model.tryMove(Richting.OMHOOG);
                break;
            case DOWN:
                event.consume();
                System.out.println("Test");
                model.tryMove(Richting.LINKS);
                break;
            case LEFT:
                event.consume();
                System.out.println("Test");
                model.tryMove(Richting.LINKS);
                break;
            case RIGHT:
                event.consume();
                System.out.println("Test");
                model.tryMove(Richting.RECHTS);
                break;
        }
        model.checkDone();
    }
});

您的代码可能无法正常工作,因为您在绘图后创建了图形实例。尝试:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt