私は次の問題に苦しんでいます。チャートのコレクションで構成されるレポートを生成する必要があります。これらのチャートはすべて、1つを除いて、Matplotlibのデフォルトバックエンド(TkAgg)を使用して作成されています。Cairoバックエンドを使用して1つのグラフを作成する必要があります。その理由は、igraphグラフをプロットしており、Cairoを使用してのみプロットできるためです。
問題は、バックエンドをその場で変更できないことです。たとえば、次の
matplotlib.pyplot.switch_backend('cairo.png')
機能は機能しません。(switch_backend機能は実験的なものであることがわかっています)
私も試しましたmatplotlib.use("cairo.png")
が、インポートするmatplotlib.use("cairo.png")
前にステートメントを入力する必要があるため、インポートの問題が発生しmatplotlib.pyplot
ます。しかし、スクリプトの存続期間中に2つの異なるバックエンドが必要です。
だから私の質問は、誰かが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バックエンドを動的に切り替える方法を知っている人は誰でも....あなたの答えを投稿してください。
pyplot.switch_backends()
。あなたの場合はうまくいかないかもしれません。