📌

Matplotlibで作成したグラフをDisplayに表示しないようにする

2023/10/19に公開

結論

Aggバックエンドを使用する

Matplotlibには、グラフィカルディスプレイが不要なAggバックエンドというものがあるらしく、このバックエンドを使用すると、エラーを回避できた。

import matplotlib
matplotlib.use('Agg')

きっかけ

下記エラーが出た。
SSH経由でUbuntuに接続しており、Displayを接続していないために起こったと思う。

Traceback (most recent call last):
  File "./XXXXXXXXXXXXX.py", line 472, in <module>
    fig = plt.figure()
  File "/opt/conda/lib/python3.8/site-packages/matplotlib/pyplot.py", line 687, in figure
    figManager = new_figure_manager(num, figsize=figsize,
  File "/opt/conda/lib/python3.8/site-packages/matplotlib/pyplot.py", line 315, in new_figure_manager
    return _backend_mod.new_figure_manager(*args, **kwargs)
  File "/opt/conda/lib/python3.8/site-packages/matplotlib/backend_bases.py", line 3494, in new_figure_manager
    return cls.new_figure_manager_given_figure(num, fig)
  File "/opt/conda/lib/python3.8/site-packages/matplotlib/backends/_backend_tk.py", line 885, in new_figure_manager_given_figure
    window = tk.Tk(className="matplotlib")
  File "/opt/conda/lib/python3.8/tkinter/__init__.py", line 2261, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display ":1
GitHubで編集を提案

Discussion