Matplotlib / Pyplot: सबप्लॉट्स को एक साथ ज़ूम कैसे करें?


82

मेरे पास अलग-अलग सबप्लॉट में 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), लेकिन मैं नहीं जानता कि कैसे बताया जाए कि किसी एक सबप्लॉट पर ज़ूम करने का अनुरोध किया गया है, और दूसरे दो सबप्लॉट पर इसे कैसे दोहराया जाए।

मुझे संदेह है कि मेरे पास सभी टुकड़े हैं, और केवल एक आखिरी कीमती सुराग की जरूरत है ...

-ओबीसी


IMO सबसे अच्छा प्रलेखन उदाहरण कोड है जो वे प्रदान करते हैं: matplotlib.org/examples/pylab_examples/sared_axis_demo.html
ट्रेवर बॉयड स्मिथ

1
सच! काश, वह पृष्ठ मौजूद होता जब मैंने अपना प्रश्न पूछा। अच्छा तो यह अब है।
BobC

जवाबों:


121

कुल्हाड़ी बनाते समय 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(...)


-1

अंतत: यह अलग-अलग अक्षों पर काम करता है

for ax in fig.axes:
    ax.set_xlim(0, 50)
fig.draw()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.