다음 문제로 어려움을 겪고 있습니다. 차트 모음으로 구성된 보고서를 생성해야합니다. 하나를 제외한 모든 차트는 Matplotlib 기본 백엔드 (TkAgg)를 사용하여 만들어집니다. 카이로 백엔드를 사용하여 차트 하나를 만들어야합니다. 그 이유는 igraph 그래프를 플로팅하고 있으며 카이로를 사용해서 만 플로팅 할 수 있기 때문입니다.
문제는 즉시 백엔드를 변경할 수 없다는 것입니다. 예를 들어 다음은 작동하지 않습니다.
matplotlib.pyplot.switch_backend('cairo.png')
(switch_backend 기능이 실험적이라는 것을 알고 있습니다)
그리고 나는 또한 시도 matplotlib.use("cairo.png")
했지만 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 백엔드를 동적으로 전환하는 방법을 아는 사람은 누구나 답변을 게시하십시오.
pyplot.switch_backends()
. 귀하의 경우에는 작동하지 않을 수 있습니다.