Post

Como usar Matplotlib com WSL2

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 tive a curiosidade de 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.

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 Figura 1 - Primeira tela da configuração do xlaunch.

2. Nesta tela deixe como está.

Deixe Como está, apenas next. Figura 2 - Segunda tela da configuração do xlaunch.

3. Marque a caixa chamada “No Access Control”.

Marque a caixa chamada "No Access Control" Figura 3 - Terceira tela da configuração do xlaunch.

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

Agora é só next, finish e está feito! Figura 4 - Ultima tela da configuração do xlaunch.

Instalando os pacotes e configurando o WSL2

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

  • Instale o python-tk:
1
$ sudo apt-get install python3-tk
  • 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.
1
$ export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"

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

Resultado final

Resultado WSL2 com matplotlib Figura 5 - Resultado final do plot com a tela do WSL na direita.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  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()

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

This post is licensed under CC BY 4.0 by the author.

Trending Tags