Python WSL Ubuntu中绘制图形时经常出现的问题

Python WSL Ubuntu中绘制图形时经常出现的问题,python,ubuntu,matplotlib,plot,xming,Python,Ubuntu,Matplotlib,Plot,Xming,我正在编写一段代码,该代码应该可以绘制一个简单的函数,它暂时可以工作,但当我重新启动计算机时,我不断遇到这种问题循环: 我第一次尝试运行代码时,它不会发出任何错误,但也不会创建任何图形 -->为了解决这个问题,我安装了Xming,并按照awokein的建议,在bash中编写了export DISPLAY=localhost:0.0命令 当我运行代码时,经过上述调整,我得到以下错误: \u tkinter.TclError:没有显示名称和$display环境变量。 -->为了解决这个问题,我添加

我正在编写一段代码,该代码应该可以绘制一个简单的函数,它暂时可以工作,但当我重新启动计算机时,我不断遇到这种问题循环:

  • 我第一次尝试运行代码时,它不会发出任何错误,但也不会创建任何图形 -->为了解决这个问题,我安装了Xming,并按照awokein的建议,在bash中编写了
    export DISPLAY=localhost:0.0
    命令

  • 当我运行代码时,经过上述调整,我得到以下错误:
  • \u tkinter.TclError:没有显示名称和$display环境变量。
    
    -->为了解决这个问题,我添加了一行代码:

    matplotlib.use('Agg')
    
    matplotlib.use('Agg')
    
    正如《和平年代》中提出的那样

  • 完成此操作并运行代码后,首先正确绘制图形。但如果我改天再试一次,就不会了。代码正常运行,但不显示任何图形 -->为了使其正常工作,我删除了代码行:

    matplotlib.use('Agg')
    
    matplotlib.use('Agg')
    
    通过这样做,代码再次绘制

    然后,当我重新启动计算机时,一系列问题又重新开始了

    有人知道我做错了什么吗?我对使用Python非常陌生,所以很可能我遗漏了一些明显的东西

    以下是我的代码的相关部分:

    #Imports
    import matplotlib
    import matplotlib.pyplot as ply
    from dolfin import *
    import numpy as np
    from mshr import *
    import math
    from math import exp
    
    plt.plot(tiemporeal,fcmM1)
    plt.xlabel('Tiempo')
    plt.ylabel('Resistencia')
    plt.show()
    
    非常感谢,很抱歉可能出现格式错误


    另外,我正在Ubuntu上使用Python3。

    对于遗留WSL,添加它就足够了

    导出显示=127.0.0.1:0
    
    到您的
    ~/.bashrc
    文件-默认后端应该可以正常工作。对于WSL2,它更复杂,您需要从
    /etc/resolv.conf
    获取服务器名称,然后从
    ifconfig
    获取掩码。例如,在我的系统上:

    wmiller@lcl:~$cat/etc/resolv.conf
    #此文件由WSL自动生成。要停止自动生成此文件,
    #将以下条目添加到/etc/wsl.conf:
    #[网络]
    #generateResolvConf=false
    名称服务器172.28.176.1
    

    wmiller@lcl:~$ifconfig | grep'inet'
    inet 172.28.176.7网络掩码255.255.240.0广播172.28.191.255
    inet 127.0.0.1网络掩码255.0.0.0
    
    因此,我的
    显示需要
    172.28.176.7:240.0
    。自动提取会有点复杂,但将以下命令添加到
    ~/.bashrc
    对我来说很有用:


    export DISPLAY=$((ifconfig | grep-f)将显示环境更改为“TkAgg”成功了。谢谢!