ホームページ >バックエンド開発 >Python チュートリアル >ディスプレイのないシステムで Matplotlib を使用して PNG 画像を生成するにはどうすればよいですか?

ディスプレイのないシステムで Matplotlib を使用して PNG 画像を生成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-14 12:40:12540ブラウズ

How to Generate PNG Images with Matplotlib on Systems Without a Display?

ディスプレイが定義されていない Matplotlib を使用した PNG の生成

グラフィカル ユーザー インターフェイス (GUI) を使用せずに matplotlib を使用する場合、次のようなエラーが発生する場合があります。 「表示名も $DISPLAY 環境変数もありません。」このエラーは、matplotlib がデフォルトで X ベースのバックエンドを使用しようとするために発生します。

グラフィカル インターフェイスのないシステムでこの問題を解決するには、次の手順に従ってください:

ステップ 1: 強制Agg バックエンドを使用する Matplotlib

matplotlib パッケージからコンポーネントをインポートする前に、このコードを含めて強制的に実行しますmatplotlib は、非対話型の「Agg」バックエンドを使用します。

import matplotlib
# Force matplotlib to not use any Xwindows backend.
matplotlib.use('Agg')

ステップ 2: 潜在的な警告を処理する

matplotlib のバージョンに応じて、バックエンドの選択順序に関する警告が表示される場合があります。このコードが matplotlib モジュールへの他の呼び出しの前に実行されるようにしてください。

代替: .matplotlibrc を編集します

コードでバックエンドを指定する代わりに、matplotlib 構成を変更できます。ユーザーのホームにあるファイル「.matplotlibrc」 directory:

  • テキスト エディターを使用して .matplotlibrc を開きます。
  • ファイルに 'backend: Agg' という行を追加します。
  • ファイルを保存して閉じます。

これにより、コードに関係なく matplotlib が常に 'Agg' バックエンドを使用するようになります。

次の Python コードを考えてみましょう:

import matplotlib
matplotlib.use('Agg')

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_node(1)
G.add_nodes_from([2, 3, 4, 5, 6, 7, 8, 9, 10])

nx.draw(G)
plt.savefig("/var/www/node.png")

前に 'matplotlib.use('Agg')' を追加します。 networkx と matplotlib のインポートでは、エラーが解決され、グラフィックなしで PNG 画像を生成できるようになります。インターフェース。

以上がディスプレイのないシステムで Matplotlib を使用して PNG 画像を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。