【问题标题】:Matplotlib figure stucked (grey window)Matplotlib 图卡住(灰色窗口)
【发布时间】:2012-10-15 00:54:37
【问题描述】:

自从我开始使用 python 以来,我一直在使用 matplotlib 时遇到一些问题。当我使用交互模式时,我必须运行 ipython --pylab --wthread 来获取绘图(如果我不使用 --wthread 命令,它不会绘制任何东西)。到目前为止,这还不是问题。

现在,我想:

  1. 进入循环
  2. 策划一些事情。这个情节是一个有两个子情节的大情节。
  3. 之后,使用 easygui 显示一个按钮面板,让用户根据他在绘图上看到的内容来决定
  4. 关闭剧情
  5. 重复每件事以绘制在我的列表中。

我现在发现有几个困难:

1) 如果我尝试使用 run script.py 命令以交互方式运行脚本,那么它不会绘制任何东西,而是直接跳转到按钮面板的东西。但是,如果我停止脚本,情节就会出现。我很确定正在发生的事情是“运行”命令在使用 for 循环完成脚本之前不会显示绘图。但我需要这些图出现在按钮之前。

2)经过一些尝试,我发现这段代码可以工作(出于某种神秘的原因……)。我尝试了其他方法,但删除任何 show() 或 draw() 命令只会使脚本无法工作

fig=plt.figure(figsize=(16,8))

plt.show()

ax1=fig.add_subplot(121)

ax2.things...

ax2=fig.add_subplot(122)

ax2.things

plt.draw()

plt.show()

plt.draw()

showthebuttonsthing...

即使这样工作,matplotlib 似乎也不能很好地处理循环,并且在 5 秒内没有按下任何按钮并只是等待后,我的 matplotlib 窗口会变灰。这可能听起来很愚蠢,但颜色对于我希望用户做出的决定很重要......

3) 如果我在 ipython 之外运行 python 脚本,我找不到让 python 脚本显示绘图的方法...

我想我的 matplotlib 配置确实有问题,但找不到方法来完成这项工作...谁能帮我解决这个问题?

提前非常感谢!

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    看起来你差不多完成了,但请尝试按此顺序执行操作:

    fig = plt.figure(figsize=(16,8))
    ax = [fig.add_subplot(121),fig.add_subplot(122)]
    
    ax[0].things
    ax[1].things
    
    plt.show()
    
    #show the button panel
    

    但是,最好的方法可能是将绘图集成到您的 GUI 中。我对EasyGUI不熟悉,但它似乎是基于tk的。这个example 应该可以帮助您将图形嵌入到 tk 窗口中。

    【讨论】:

    • 我担心这不起作用,但这可能是因为我正在使用一个函数来进行绘图,这非常复杂。然而,这可能是一件小事。我现在最关心的是“灰色”的东西,以及 matplotlib 似乎无法在 for 循环中工作的原因。我认为这与我的特定计算机有关(我已经看到相同的代码在其他计算机上工作,但这不会发生)。但到目前为止,我还没有在这个问题的文档中找到任何答案......但是非常感谢! ;)
    • 哦,我没有看到tk窗口的东西,这将非常有用。谢谢!
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多