2012-10-16 17 views
17

में सबप्लॉट्स के बीच द्वितीयक वाई-अक्ष साझा करने के लिए कैसे करें यदि आपके पास एक माध्यमिक वाई-अक्ष (twinx का उपयोग करके बनाया गया एकाधिक उपखंड हैं), तो आप इन माध्यमिक वाई-अक्ष को सबप्लॉट्स के बीच कैसे साझा कर सकते हैं? मैं चाहता हूं कि वे एक स्वचालित तरीके से समान रूप से स्केल करें (इसलिए बाद में वाई-सीमाएं सेट न करें)। प्राथमिक y- अक्ष के लिए, यह subplot की कॉल में कीवर्ड sharey का उपयोग करके भी संभव है।matplotlib

उदाहरण नीचे मेरी प्रयास से पता चलता है, लेकिन यह दोनों subplots के माध्यमिक y- अक्ष साझा करने के लिए विफल रहता है। मैं उपयोग कर रहा हूँ matplotlib/Pylab:

ax = [] 

#create upper subplot 
ax.append(subplot(211)) 
plot(rand(1) * rand(10),'r') 

#create plot on secondary y-axis of upper subplot 
ax.append(ax[0].twinx()) 
plot(10*rand(1) * rand(10),'b') 

#create lower subplot and share y-axis with primary y-axis of upper subplot 
ax.append(subplot(212, sharey = ax[0])) 
plot(3*rand(1) * rand(10),'g') 

#create plot on secondary y-axis of lower subplot 
ax.append(ax[2].twinx()) 
#set twinxed axes as the current axes again, 
#but now attempt to share the secondary y-axis 
axes(ax[3], sharey = ax[1]) 
plot(10*rand(1) * rand(10),'y') 

यह मैं की तरह कुछ हो जाता है:

Example of two subplots with failed sharing of secondary y-axis

कारण मैं कुल्हाड़ियों का इस्तेमाल किया() समारोह सेट करने के लिए साझा y- अक्ष कि है twinxsharey कीवर्ड को स्वीकार नहीं करता।

I'am Win7 x64 पर पायथन 3.2 का उपयोग कर। Matplotlib संस्करण 1.2.0rc2 है।

उत्तर

30

तुम इतनी तरह Axes.get_shared_y_axes() उपयोग कर सकते हैं:

from numpy.random import rand 
import matplotlib 
matplotlib.use('gtkagg') 
import matplotlib.pyplot as plt 

# create all axes we need 
ax0 = plt.subplot(211) 
ax1 = ax0.twinx() 
ax2 = plt.subplot(212) 
ax3 = ax2.twinx() 

# share the secondary axes 
ax1.get_shared_y_axes().join(ax1, ax3) 

ax0.plot(rand(1) * rand(10),'r') 
ax1.plot(10*rand(1) * rand(10),'b') 
ax2.plot(3*rand(1) * rand(10),'g') 
ax3.plot(10*rand(1) * rand(10),'y') 
plt.show() 

यहाँ हम सिर्फ माध्यमिक कुल्हाड़ियों एक साथ शामिल हो रहे हैं।

उम्मीद है कि मदद करता है।

+0

हां, वह मैं आगे की मदद की है, धन्यवाद। मैं प्राथमिक वाई-अक्ष में भी शामिल हो गया ताकि उनके पास एक साझा वाई-अक्ष भी हो। – Puggie

+0

खुशी है कि मैं मदद कर सकता हूं। इंटरनेट अंक के लिए धन्यवाद। – dmcdougall

+1

यह काम नहीं करता है, दूसरे जुड़वां पैमाने अपडेट कर दिया है, लेकिन दूसरे जुड़वां साजिश रहता है यह है थे। – Mattia