Matplotlib图被困(灰色窗口)

时间:2012-10-14 16:22:18

标签: python matplotlib

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

现在,我想:

  1. 输入循环
  2. 绘制一些东西。这个情节是一个有两个子图的大图。
  3. AFTER,显示一个带有easygui的按钮面板,让用户根据他在剧情中看到的内容做出决定
  4. 关闭情节
  5. 重复每个要在我的列表中绘制的内容。
  6. 我现在发现了几个困难:

    1)如果我尝试使用run script.py命令以交互方式运行脚本,那么它不会绘制annything,而是直接跳转到按钮pannel的东西。但是,如果我停止脚本,则会显示这些图。我很确定发生的事情是"运行"命令不会显示绘图,直到脚本完成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配置确实存在问题,但无法找到一种方法让这项工作成功...有谁可以帮我解决这个问题?

    提前多多感谢!

1 个答案:

答案 0 :(得分:0)

看起来你几乎已经得到了它,但是尝试按此顺序做事:

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窗口中。