次の問題で悩んでいます。グラフのコレクションで構成されるレポートを生成する必要があります。これらのグラフはすべて、1 つを除いて、Matplotlib の既定のバックエンド (TkAgg) を使用して作成されています。Cairo バックエンドを使用して 1 つのグラフを作成する必要があります。その理由は、igraph グラフをプロットしていて、Cairo を使用してのみプロットできるためです。
問題は、バックエンドをオンザフライで変更できないことです。たとえば、次のように動作しません:
matplotlib.pyplot.switch_backend('cairo.png')
(switch_backend 機能が実験的であることはわかっています)。
私も試しましたが、ステートメントは import の前に来る必要がmatplotlib.use("cairo.png")
あるため、これはインポートの問題につながります。しかし、スクリプトの存続期間中に 2 つの異なるバックエンドが必要です。matplotlib.use("cairo.png")
matplotlib.pyplot
だから私の質問は、誰かが Matplotlib でバックエンドを切り替える方法を示すコード スニペットを持っているかということです。
本当にありがとう!
更新: matplotlib をロードし、デフォルトのバックエンドを表示し、matplotlib をアンロードし、再ロードしてバックエンドを変更するスニペットを作成しました。
import matplotlib
import matplotlib.pyplot as plt
import sys
print matplotlib.pyplot.get_backend()
modules = []
for module in sys.modules:
if module.startswith('matplotlib'):
modules.append(module)
for module in modules:
sys.modules.pop(module)
import matplotlib
matplotlib.use("cairo.png")
import matplotlib.pyplot as plt
print matplotlib.pyplot.get_backend()
しかし、これは本当にそれを行う方法ですか?
更新 2: 昨日、深刻な脳のフリーズがありました... シンプルで最も明白な解決策は、すべてのチャートに Cairo バックエンドを使用し、バックエンドをまったく切り替えないことです :)
更新 3: 実際にはまだ問題なので、matplotlib バックエンドを動的に切り替える方法を知っている人は誰でも....回答を投稿してください。