DEV Community

Cover image for Como usar Matplotlib com WSL2
Gabriel Lavoura
Gabriel Lavoura

Posted on

2 2

Como usar Matplotlib com WSL2

Nos últimos meses tenho migrado meu ambiente de desenvolvimento para WSL2 (Windows Subsystem for Linux 2), sempre fui um usuário assíduo de dual boot, mas tenho trabalhado em diversos projetos em paralelo, sendo necessário mudar de sistema varias vezes ao dia, seja devido ao Home Office ou por reuniões.
Neste caso Windows torna-se um sistema amigável e com "Batteries Included", porém sinto falta da liberdade e agilidade que o pinguim me oferece.
WSL2 veio para suprir essa demanda, atualmente tenho utilizado como sistema principal de desenvolvimento, a experiência tem sido muito positiva, algumas horas para configurar tudo de primeira, mas para a próxima vez que for necessário reinstalar já está tudo automatizado, utilizando shell script para configurar o ambiente.
Hoje precisei rodar um script Python direto pelo WSL2, um plot simples de uma distribuição gaussiana e me deparei com um problema clássico:

    "UserWarning: Matplotlib is currently using agg, which is a non-GUI.
Enter fullscreen mode Exit fullscreen mode

Para resolver é bem simples, bora lá.

Escolha um X-server do seu gosto!

Eu testei com o Xming e o VcXsrv, ambos funcionaram que é uma beleza, vou seguir com o Xming neste post.

Baixe a última versão disponível do Xming para Windows e basta instalar com next, next, next, install. Aconselho liberar a ferramenta no firewall do Windows para não dar dor de cabeça.

Agora deve-se ter um pouco de atenção, segue os passos ilustrados:

  1. Abra o XLauch, escolha Multiple Windows.
    Escolha Multiple Windows

  2. Nesta tela deixe como está.
    Deixe Como está, apenas next.

  3. Marque a caixa chamada "No Access Control".
    Marque a caixa chamada

  4. Agora é só next, finish e está feito!
    Agora é só next, finish e está feito!

Vamos para o WSL2

Neste caso eu estou utilizando a imagem do Ubuntu 20.04 disponível na Microsoft Store.

  • Instale o python-tk:
$ sudo apt-get install python3-tk
Enter fullscreen mode Exit fullscreen mode
  • Coloque o ip no arquivo resolv.conf, aconselho colocar no seu arquivo .zshrc / .bashrc, para nao precisar inserir novamente, pois o ip do wsl2 não é fixo.
$ export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
Enter fullscreen mode Exit fullscreen mode

E está feito, relativamente simples e eficiente, a seguir uma imagem do resultado final:
Resultado WSL2 com matplotlib

Claro que não podia faltar o código que usei, peguei um dos exemplos do matplotlib para ilustrar este post:

  import matplotlib
  import matplotlib.pyplot as plt
  import numpy as np

  # Data for plotting
  t = np.arange(0.0, 2.0, 0.01)
  s = 1 + np.sin(2 * np.pi * t)

  fig, ax = plt.subplots()
  ax.plot(t, s)

  ax.set(xlabel='time (s)', ylabel='voltage (mV)',
         title='About as simple as it gets, folks')
  ax.grid()

  fig.savefig("test.png")
  plt.show()
Enter fullscreen mode Exit fullscreen mode

Então é isso, espero ter ajudado e poupado um pouco do seu tempo! :)

Heroku

Built for developers, by developers.

Whether you're building a simple prototype or a business-critical product, Heroku's fully-managed platform gives you the simplest path to delivering apps quickly — using the tools and languages you already love!

Learn More

Top comments (0)

AWS Q Developer image

Your AI Code Assistant

Automate your code reviews. Catch bugs before your coworkers. Fix security issues in your code. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

👋 Kindness is contagious

Explore a trove of insights in this engaging article, celebrated within our welcoming DEV Community. Developers from every background are invited to join and enhance our shared wisdom.

A genuine "thank you" can truly uplift someone’s day. Feel free to express your gratitude in the comments below!

On DEV, our collective exchange of knowledge lightens the road ahead and strengthens our community bonds. Found something valuable here? A small thank you to the author can make a big difference.

Okay