문제

Spyder IDE를 사용하고 있는데 matplotlib 그림 창이 항상 다른 창 뒤에 표시되는 것을 발견했습니다.예를 들어, Spyder를 시작한 직후에 다음을 입력하면 plt.plot([0,1],[0,1]) 콘솔에서는 기본 Spyder 창 뒤에 플롯이 표시됩니다.다른 모든 창 위에 새 Figure 창을 표시하려면 어떻게 해야 합니까?

나는 이 해결책을 찾았습니다(matplotlib 플로팅 창을 활성 창으로 팝업되도록 만듭니다.) 그러나 Spyder에서는 작동하지 않습니다.나는 문제에 봉착했다 fig.canvas.manager.window.그것은 말한다 AttributeError: 'FigureManagerMac' object has no attribute 'window'.

도움이 되었습니까?

해결책

글쎄, 나는 다른 일을 하고 있을 때 해결책을 발견했습니다.

내가 사용할 때 MacOSX 백엔드, 그럼 fig.canvas.manager.window 준다 AttributeError: 'FigureManagerMac' object has no attribute 'window'.그러나 내가 사용할 때 TkAgg 백엔드, 그럼 fig.canvas.manager 속성이 있습니다 window.따라서 구현할 수 있습니다 이 제안 다음과 같이:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
fig = plt.figure()
plt.plot([0,1],[0,1])
#Put figure window on top of all other windows
fig.canvas.manager.window.attributes('-topmost', 1)
#After placing figure window on top, allow other windows to be on top of it later
fig.canvas.manager.window.attributes('-topmost', 0)

아주 간단하죠?첫 번째 까다로운 부분은 pyplot을 가져오기 전에 백엔드를 설정해야 한다는 것입니다.나중에 백엔드를 변경해도 내 경험으로는 아무런 효과가 없습니다.두 번째 까다로운 부분은 Spyder의 Scientific Startup 스크립트가 수행하는 작업입니다. import matplotlib.pyplot as plt Spyder IDE를 시작할 때 바로 실행되므로 pyplot을 가져오기 전에 백엔드를 설정할 기회가 없습니다.이 문제를 해결하는 방법은 Preferences->Console->External Modules로 이동하여 GUI 백엔드를 TkAgg로 설정하고 Spyder를 다시 시작하는 것입니다.그러면 위의 코드가 제대로 작동합니다.

이전에는 다음을 통해 백엔드를 설정했습니다. matplotlib.rcParams['backend'] = 'TkAgg' 스파이더를 시작한 직후.그런데 다른 일을 하고 있을 때 다음과 같은 오류가 발생하기 시작했습니다. MacOSX 백엔드.나는 내가 사용하고 있다고 생각했기 때문에 이것은 나에게 아무런 의미가 없었습니다. TkAgg.가장 짜증나는 부분은 내가 질문을 했을 때다. matplotlib.get_backend 그것은 돌아왔다 TkAgg!분명히 pyplot을 가져온 후 백엔드를 설정하면 백엔드를 변경한 것처럼 작동하지만 실제로 백엔드가 변경되지는 않습니다.아그!!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top