質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3116閲覧

matplotlibでグラフの描画ができない

MF0524

総合スコア51

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/10/20 09:45

前提

お世話になります。
以下のプログラムを実行したところ、以下のエラーが出ました。

Python

1#!/usr/bin/env python 2 3import numpy as np 4import matplotlib.pyplot as plt 5 6fig, ax = plt.subplots(nrows=1, ncols=1) 7x = np.linspace(0, 2*np.pi, 500) 8ax.plot(x,np.sin(x)) 9fig.savefig("./test.jpeg") 10plt.close()

エラーメッセージ

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, minimal, minimalegl, offscreen, vnc, webgl, xcb.

他のパソコンではうまく機能していることから、使用したコード自体には問題が無いことを確認しています。

予想される原因と知りたいこと

恐らくですが、画像の出力先の設定がうまくいっていないと思われます。
上記の考察はこちらの記事も参考にしました。
ただ、どういう風に設定すれば解決するのかが分かりません。
とりあえず環境変数を調べたところ、「DISPLAY=:0」と設定されていることは確認しました。

試してみたがうまくいかなかったこと

・pythonを再インストールしました。
・sudo apt-get install libxkbcommon-x11-0 をすると良いという記事を見たので、実行しました。

実行環境

wsl2
Ubuntu 20.04.4 LTS
Python 3.9.5

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bull

2022/10/20 23:44

matplotlib のバックエンドは何を使用していますか? メッセージを読むと "Qt" を使おうとしていてエラーになっているように思えます。 私は Qt を使用していないのでよくわからないのですが。 ご提示のプログラムはグラフを表示するのではなく、画像ファイルに保存しているだけなので、バックエンドは "Agg" でもいけそうな気がします。 その場合、ソースコードの先頭 (import matplotlib.pyplot as plt の前に) import matplotlib matplotlib.use('Agg') を追加して、バックエンドを "Agg" に変更すればいいかと思います。 グラフをウィンドウに表示したいのであれば、また、解決方法は違ってきます。
MF0524

2022/10/21 00:44

>Bull様 バックエンドをAggに変更することで無事解決しました。ありがとうございます。 もしよろしければ、ベストアンサーにしたいので、解決方法として投稿していただけないでしょうか? よろしくお願い致します。
guest

回答1

0

ベストアンサー

matplotlib でグラフを描画するにはいずれかのバックエンドが必要ですが、ご提示のプログラムはグラフをウィンドウに表示するのではなく、画像ファイルに保存しているだけなので、バックエンドは "Agg" でよろしいかと思います。

その場合、ソースコードの先頭 (import matplotlib.pyplot as plt の前に)

Python

1import matplotlib 2matplotlib.use('Agg')

を追加して、バックエンドを "Agg" に変更すればいいです。

投稿2022/10/21 02:50

Bull

総合スコア986

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MF0524

2022/10/21 03:05

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問