나는 애니메이션이 실행 중이거나 정지 상태 일 때 애니메이션 플롯의 xlim과 ylim을 변경할 수 있기를 원합니다. 애니메이션이 실행되는 동안 (ax.set_xlim/set_ylim 호출을 사용하여) 변경하면 문제가 없지만 event_source.stop()을 사용하여 애니메이션을 일시 중지하면 좌표 축을 따라 그려지는 숫자는 변경되지 않습니다.matplotlib에서 일시 정지 된 애니메이션의 좌표 범위를 조정하는 방법은 무엇입니까?
다음은이 문제를 보여주는 테스트 프로그램입니다. 애니메이션이 실행되는 동안 '-'와 '+'키를 눌러보십시오. 파란색 오브젝트가 스케일되고 좌표 범위가 업데이트됨을 볼 수 있습니다. 그러나 SPACE를 먼저 눌러 애니메이션을 일시 중지 한 다음 '-'또는 '+'를 누르면 파란색 오브젝트 만 크기가 조정되지만 좌표 범위는 그대로 유지됩니다 (애니메이션은 호출의 부작용으로 다시 시작됩니다). ani._end_redraw (없음)).
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from numpy import sin, cos, pi
def keypress(event):
global anim_running
if event.key == ' ':
ani.event_source.stop() if anim_running else ani.event_source.start()
anim_running = not anim_running
elif event.key == '+':
ax.set_xlim([-4,4])
ax.set_ylim([-4,4])
ani._end_redraw(None)
elif event.key == '-':
ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ani._handle_resize()
ani._end_redraw(None)
phi = pi/2
def animate(i):
global phi
line.set_data([[0.0, sin(phi)], [0.0, cos(phi)]])
phi += 0.01
return line,
fig,ax = plt.subplots(1, 1)
ax.set_xlim([-2,2])
ax.set_ylim([-2,2])
line, = ax.plot([], [], 'o-', lw=2, color='b')
fig.canvas.mpl_connect('key_press_event', keypress)
ani = animation.FuncAnimation(fig, animate, blit=True, interval=0, frames=2000)
anim_running = True
plt.show()
가 다시이 아니라, 1. 변경 제한 2. 그리기 캔버스, 3.stop 애니메이션 일 (
_end_redraw
를 통해), (_handle_resize
통해) 4. 다시 시작 애니메이션을 새로운 배경을 잡아 것 같아요 블리 팅에 문제가있다. 그래서 그 요구 사항은 질문의 일부가되어야합니다. – ImportanceOfBeingErnest