UFO ET IT

Matplotlib / Pyplot : 서브 플롯을 함께 확대 / 축소하는 방법은 무엇입니까?

ufoet 2020. 11. 21. 08:37
반응형

Matplotlib / Pyplot : 서브 플롯을 함께 확대 / 축소하는 방법은 무엇입니까?


함께 확대하고 싶은 별도의 서브 플롯에 3 축 가속도계 시계열 데이터 (t, x, y, z) 플롯이 있습니다. 즉, 하나의 플롯에서 "직사각형으로 확대"도구를 사용할 때 마우스를 놓으면 3 개의 플롯이 모두 함께 확대됩니다.

이전에는 서로 다른 색상을 사용하여 단일 플롯에 3 개의 축을 모두 플로팅했습니다. 그러나 이것은 적은 양의 데이터에만 유용합니다. 2 백만 개가 넘는 데이터 포인트가 있으므로 플로팅 된 마지막 축이 다른 두 개를가립니다. 따라서 별도의 서브 플롯이 필요합니다.

matplotlib / pyplot 마우스 이벤트 (http://matplotlib.sourceforge.net/users/event_handling.html)를 캡처 할 수 있고 다른 이벤트 (http://matplotlib.sourceforge.net/api/backend_bases_api)를 캡처 할 수 있다는 것을 알고 있습니다. .html # matplotlib.backend_bases.ResizeEvent),하지만 한 서브 플롯에서 어떤 확대 / 축소가 요청되었는지와 다른 두 서브 플롯에서 복제하는 방법을 알 수 없습니다.

나는 모든 조각을 가지고 있다고 생각하며 마지막 귀중한 단서 만 필요합니다 ...

-BobC


이를 수행하는 가장 쉬운 방법 은 축을 만들 때 sharex및 / 또는 sharey키워드 를 사용하는 것입니다 .

from matplotlib import pyplot as plt

ax1 = plt.subplot(2,1,1)
ax1.plot(...)
ax2 = plt.subplot(2,1,2, sharex=ax1)
ax2.plot(...)

당신 plt.subplots의 스타일이라면으로 도 할 수 있습니다 .

fig, ax = plt.subplots(3, 1, sharex=True, sharey=True)

대화식으로 이것은 별도의 축에서 작동합니다.

for ax in fig.axes:
    ax.set_xlim(0, 50)
fig.draw()

참고 URL : https://stackoverflow.com/questions/4200586/matplotlib-pyplot-how-to-zoom-subplots-together

반응형