3
0

More than 3 years have passed since last update.

MobaXtermを使ってWSLのmatplotlibを描画する

Posted at

はじめに

VSCodeやWSL(Ubuntu)をインストールしていくと、特に何も考えずにRemote WSLが入ったりpythonが入ったりして環境が便利に整っていくのは本当に助かります。ただ、matplotlibで描画がされないという問題だけはちょっと作業が必要です。
検索するとVcXsrvを入れて対応している方が多い印象を受けましたが、このためにXServerだけを入れるのはつまらない……
というわけで、気になっていたMobaXtermを使ってみることにしました。

環境

  • Windows10 Home
  • WSL2 / Ubuntu 18.04 LTS

MobaXtermのインストール

MobaXtermのページ からFree版をダウンロードします。
Portable版とInstaller版のどちらを選んでもかまいませんが、私はInstaller版で入れました。
インストール時の選択肢はデフォルトのままでよいと思います。

初回起動時はWindows Firewallでブロックされますので、許可してあげてください。

MobaXtermが起動すると当たり前のようにUser sessionにWSLが表示されていました。
これをダブルクリックするとWSLが立ち上がります。すごい!
image.png

DISPLAY環境変数と接続の設定

X11はDISPLAY環境変数を参照してそこに描画情報を送ります。
WSL上でmatplotlibを使って描画すると、このDISPLAY環境変数を参照してMobaXtermで動いているXServerに描画情報を送ります。
毎回DISPLAY環境変数を設定するのも大変なので、3行目に表示されているYour DISPLAY is set to...のIPを参照して、WSLの.bashrc に設定を加えておきます。
設定するIPアドレスは各々違うと思うので、適宜変更してください。

~/.bashrc
$ echo 'export DISPLAY=192.168.xxx.yyy:0.0' >> ~/.bashrc
$ . ~/.bashrc

また、描画しようとする時にはMobaXtermが「つないで良い?」と聞いてくれます。
毎回聞かれるのが面倒な方はRemote Access Controlを無効にしておきます。
Settings → Configuration → X11 → X11 remote accessを'on demand' から 'full' にします。
他の設定にどんな意味があるか気になる方はMobaXterm Documentationを参照してください。

image.png

matplotlibで描画してみる

例はめっちゃシンプルな方がいいでしょうということで。
MobaXtermは起動したままにしておいてください。

import matplotlib.pyplot as plt

plt.plot([0, 1], [0, 2])
plt.show()

image.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0