Ubuntuでmatplotlibプロット(およびその他のGUI)を表示する(WSL1およびWSL2)

AwokeKnowing:

したがって、Windows用のUbuntu(Linux用のWindowsサブシステム)では、Aggバックエンドを使用して、プロットを表示するのではなく、単に画像を保存する必要があることを人々が示唆しています。

import matplotlib
matplotlib.use('Agg') # no UI backend

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)
plt.title('About as simple as it gets, folks')

#plt.show()
plt.savefig("matplotlib.png")  #savefig, don't show

どうすれば、plt.show()が実際に画像を表示する場所に到達できますか?現在のオプションは、plot.show()をオーバーライドして、代わりにウィンドウの/ mnt / c / Users / james / plots /の下にあるplot-148123456.pngを保存し、画像を表示するエクスプローラーウィンドウを開くことです。

そのフォルダーをホストしてブラウザーを使用できると思います。

私の目標は、どこかで画像をftpするコードを変更することなく、上記のコードのような簡単な例を実行できるようにすることです。プロットをウィンドウに表示したいだけです。

誰かがそれを行うためのまともな方法を見つけましたか?

AwokeKnowing:

わかりましたので、次のように動作させました。WindowsにUbuntuをインストールし、anaconda python 3.6をインストールしました。

  1. VcXsrvまたはXming(X11 for Windows)をsourceforgeからダウンロードしてインストールします(以下の編集を参照)
  2. sudo apt-get update
  3. sudo apt-get install python3.6-tkpython*-tk使用しているpythonバージョンに別のdepnding をインストールする必要がある場合があります)
  4. pip install matplotlib (matplotlibの場合。他の多くの機能も動作するようになりました)
  5. export DISPLAY=localhost:0.0~/.bashrc永続化するために追加します。以下のWSL2を参照してください

とにかく、結局のところ、wslのubuntuで実行されているこのコードは次のように機能しました。

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)

plt.title('About as simple as it gets, folks')
plt.show()

結果: ここに画像の説明を入力してください

多分これはJupyterノートブックか何かを介して行う方が良いかもしれませんが、Linux用サブシステム上のUbuntu for Windowsで基本的なコマンドラインのpython matplotlib機能を持っているのは素晴らしいことです、そしてこれは他の多くのguiアプリも機能させます。

たとえば、xeyesをインストールすると、x11-appsをインストールし、それをインストールすると、多くのGUIアプリが使用するGTKがインストールされます。ただし、重要なのは、DISPLAYを正しく設定し、xサーバーをWindowsに設定したら、ネイティブubuntuで機能するほとんどの機能がWSLで機能することです。

編集2019-09-04:一部のライブラリをアップグレードした後、今日、「画面リソースを取得できません」という問題が発生しました。そこで、VcXsrvをインストールして、Xmingの代わりに使用しました。https://sourceforge.net/projects/vcxsrv/からインストールし、xlaunch.exeを実行して、複数のウィンドウを選択し、次に次へ、次に[OK]をクリックします。その後、すべてが機能しました。

WSL 2ユーザー向けの編集2020-06-23 WSL2(現在インサイダーの高速リング)はGPU / Dockerをサポートしているため、アップグレードする価値があります。ただし、vmで実行されます。WSL 2の場合は、同じ手順1〜4に従ってください。

  1. IPはlocalhostではありません。それはresolv.confにあるので、代わりにこれを実行してください(そして〜/ .bashrcにインクルードしてください):
 export DISPLAY=`grep -oP "(?<=nameserver ).+" /etc/resolv.conf`:0.0
  1. ファイアウォールを再確認してください:Windows Security-> Firewall&network protection-> Allow app through firewall-> VcXsrvでパブリックとプライベートの両方がチェックされていることを確認してください
  2. 「アクセス制御を無効にする」にチェックを入れてVcXsrvを起動します

注:一部のユーザーはのようなエラーを受け取りましたcouldn't connect to display "172.x.x.x:0"その場合は、次のコマンドを使用して、DISPLAYに保存されているIPアドレスを確認してくださいecho $DISPLAY表示されたIPが間違っていると思われる場合(つまり、「8.8.8.8」または別の機能していないIPアドレス)~/.bashrc、ポイント5 表示されたコードを、インスタンスのIPアドレスを取得するコードに変更する必要があります。あるユーザーはこれがうまくいったと言いました:export DISPLAY=$(ifconfig | grep inet | awk '{print $2}' | head -n 1 | awk '{print $0":0"}')ただし、一部のユーザーにとっては機能しませんでした。YMMV、しかしあなたのIPを見つけてDISPLAYのために使用するだけです。ほとんどのWSL2ユーザーの場合、#5のコマンドが機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Ubuntuでmatplotlibプロットを表示(Linux、WSL1、WSL2のWindowsサブシステム)

WSL2でsystemdを有効にする方法:Ubuntu20およびCentOS8

PythonのPatchCollectionおよびその他のプロットにmatplotlibスライダーを使用する

Angularプロジェクトに画像(およびその他のアセット)をロードする方法は?

同じウィンドウで2つのmatplotlibプロットを同時に表示および更新するにはどうすればよいですか?

ブレークポイントが機能しないWindows10およびWSL2のVisualStudioCodeを介したChromeでのReactアプリのデバッグ

通常どおり2列をピボットおよびその他にする方法

WSL2マシンを起動できません。Ubuntu 20.04、18.04およびすべてを試しました

Adobe Air / Flexでグループのセットを配置および表示するためのアプローチ

WSLおよびローカルSymfonyWebサーバーでhttpsを使用する

ggplot2およびその他のRグラフィックで新しいシェイプパレットを作成する

プログラムでUIScrollViewにいくつかのUITextViewおよびその他の要素を追加するXamarinIOS

FFIで()(およびその他のゼロサイズのタイプ)を使用する

WSLおよびWSL2for Windows 10でMOTDメッセージを有効にしますか?

docker、vscode、およびWSL2を使用してxDebugが機能しない

インストール(およびその他のプログラム)後にAndroidStudioを実行する

ApplicationUserおよびその他のモデルをMVCプロジェクトから移動する

Googleおよびその他のIBMWebsphere6.1で検索結果をブロックする方法

matplotlib、サブプロットのプロット/描画および保存を高速化する方法は?

ec2 userdatacloudformationでforループおよびその他の宣言された変数を使用する

Pythonでnumpyとmatplotlibを使用して、2次元データの最大および最小の固有ベクトルをプロットする方法は?

DirExistsWarningおよびその他のディレクティブでスクリプト定数を使用する

Matplotlib: ループを使用してプロットを表示および閉じる

WSL2からWSL1への復帰

Rでの分割プロット(およびその他の古典的なデザイン)のランダム化

Linux および Windows のユーザー名に基づく WSL2 動的ファイル パス

matplotlibプロットのfigおよびaxプロパティ

Pythonでプロビット回帰を実行および表示する方法

Ubuntu 14.04.2 LTSでPython3のソースからnumpy、scipy、およびその他のパッケージをインストールする方法

TOP 一覧

  1. 1

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  2. 2

    Railsで宝石のレイアウトを使用するにはどうすればよいですか?

  3. 3

    Chromeウェブアプリのウェブビューの高さの問題

  4. 4

    Ansibleで複数行のシェルスクリプトを実行する方法

  5. 5

    アンドロイド9 - キーストア例外android.os.ServiceSpecificException

  6. 6

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  7. 7

    CSSのみを使用して三角形のアニメーションを作成する方法

  8. 8

    Google Playストア:アプリページにリーダーボードと実績のアイコン/バッジが表示されない

  9. 9

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  10. 10

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  11. 11

    Windows 7では、一部のプログラムは「ビジュアルテーマを無効にする」レジストリ設定を行いませんか?

  12. 12

    Get-ADGroupMember:このリクエストのサイズ制限を超えました

  13. 13

    Pyusb can't find a device while libusb can

  14. 14

    MySQLでJSON_LENGTHとJSON_EXTRACTを組み合わせる方法は?

  15. 15

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  16. 16

    Swiftのブロックのパラメーターに関するドキュメントのマークアップ形式は何ですか?

  17. 17

    Reactでclsxを使用する方法

  18. 18

    追加後、ブートストラップマルチセレクトがテーブルで機能しない

  19. 19

    MongoDB Compass: How to select Distinct Values of a Field

  20. 20

    「埋め込みブラウザのOAuthログイン」を有効にしてコールバックURLを指定した後でも、Facebookのコールバックエラーが発生する

  21. 21

    複数行ヘッダーのJTableヘッダーテキストの折り返し(カスタムTableCellRenderer)

ホットタグ

アーカイブ