Edited at

WSLでmatplotlibやgnuplotでプロットができない


WSLでGUIのソフトは使えないものか

僕はWSLをダウンロードして, Anacondaをダウンロードして,

matplotlibで意気揚々とサインカーブを描こうと思ったら...

無事にエラーを吐かれました.


どうしてプロットできないのか

この症状は, WSL自体が出力するディスプレイを認識できないことが原因です.

そこで今回はVcXsrvというソフトをダウンロードして,

出力先のディスプレイを作成しちゃいましょう.


追記

先日、WSL2というものが新しく発表になりました。

しかしながらHyper-Vを用いている性質上か、IPアドレスの設定が難しい状況にあります。

使いやすい方法が確立されるまではWSL1を用いていたほうが無難かと思われます。

一応WSL2についての記事を作成いたしましたので、参考にしていただけたらと思います。

WSL2におけるVcXsrvの設定


VcXsrvのインストール

つぎのサイトからVcXsrvをインストールしてください

sourceforge.net

特に設定はありませんので, ポチポチとしていれば大丈夫だと思います.


VcXsrvの自動起動設定



  1. xlaunch.exeという実行ファイルがあると思いますので, 起動します.

  2. multiple window を選んで, 次へを選択します.

  3. start to dient を選んで, 次へを選択します.

  4. clipboard を使用したければ, clipboardにチェックを入れて, 次へを選択します.

  5. Save configuration を押して, どこかアクセスしやすい場所(デスクトップとか)に保存してください.

  6. 完了を押してxlaunchを終了します.

  7. 続いて, Windowsキー + rを押して, shell:startupと入力して検索します.


  8. スタートアップというフォルダが開きますので, ここに先ほどxlaunchを用いて作成したファイルを移動してしまってください.

これで, 自動的にVcXsrvがパソコンの起動時に立ち上がるようになりました.


WSL上のディスプレイの設定

最後にVcXsrvの存在をWSLに教えてあげましょう.


  1. WSLを開きます.

  2. vim や nano などで~/.bashrcを開きます.

  3. 開いた.bashrcの最後の行に, 以下のコマンドを追記して保存してください.


.bashrc

   export DISPLAY=:0.0


最後にWSLを再起動すると, 先ほど編集した.bashrcが読み込まれて, 設定が反映されます.


最後に

以上でmatplotlibもgnuplotも無事に使えるようになったと思います.

またほかのGUIのプログラムについても使えるようになったかと思いますので, ぜひ楽しんでみてください.


おまけ

以下のサイトを参考にさせて頂きました.

とても素晴らしいWSLをご紹介されているので, 是非ご覧ください.

お前らのWSLはそれじゃダメだ