2010-09-05 10 views
23

में धुरी सीमा सेट करें मेरे पास एक आकृति में दो सबप्लॉट हैं। मैं दूसरे सबप्लॉट की अक्ष सेट करना चाहता हूं जैसे कि पहले सबप्लॉट (जो प्लॉट किए गए मानों के आधार पर बदलता है) के समान सीमाएं हैं। क्या कोई मेरी सहायता कर सकता है?matplotlib pyplot

import matplotlib.pyplot as plt 

plt.figure(1, figsize = (10, 20)) 
## First subplot: Mean value in each period (mean over replications) 
plt.subplot(211, axisbg = 'w') 
plt.plot(time,meanVector[0:xMax], color = '#340B8C', 
     marker = 'x', ms = 4, mec = '#87051B', markevery = (asp, 
                  2*asp)) 
plt.xticks(numpy.arange(0, T+1, jump), rotation = -45) 
plt.axhline(y = Results[0], color = '#299967', ls = '--') 
plt.ylabel('Mean Value') 
plt.xlabel('Time') 
plt.grid(True) 


## Second subplot: moving average for determining warm-up period 
## (Welch method) 
plt.subplot(212)  
plt.plot(time[0:len(yBarWvector)],yBarWvector, color = '#340B8C') 
plt.xticks(numpy.arange(0, T+1, jump), rotation = -45) 
plt.ylabel('yBarW') 
plt.xlabel('Time') 
plt.xlim((0, T)) 
plt.grid(True) 

दूसरा subplot में, क्या plt.ylim() समारोह के लिए बहस होनी चाहिए: यहाँ कोड है? मैं पहली बार subplot में

ymin, ymax = plt.ylim() 

को परिभाषित करने की कोशिश की और फिर दूसरी subplot में

plt.ylim((ymin,ymax)) 

निर्धारित किया है। लेकिन यह काम नहीं किया, क्योंकि लौटा मूल्य ymax पहले सबप्लॉट में y चर (माध्य मान) द्वारा लिया गया अधिकतम मूल्य है और वाई-अक्ष की ऊपरी सीमा नहीं है।

अग्रिम धन्यवाद।

उत्तर

12

मैंने matplotlib वेबसाइट पर कुछ और खोज की और इसे करने का एक तरीका निकाला। अगर किसी के पास बेहतर तरीका है, तो कृपया मुझे बताएं।

पहले सबप्लॉट में plt.subplot(211, axisbg = 'w')ax1 = plt.subplot(211, axisbg = 'w') द्वारा प्रतिस्थापित करें। फिर, दूसरे उप-स्थान में, subplot कमांड में sharex = ax1 और sharey = ax1 तर्क जोड़ें। यही है, दूसरा सबप्लॉट कमांड अब देखेगा:

plt.subplot(212, sharex = ax1, sharey = ax1) 

इससे समस्या हल हो जाती है। लेकिन अगर अन्य बेहतर विकल्प हैं, तो कृपया मुझे बताएं।

13

आपका प्रस्तावित समाधान काम करना चाहिए, खासकर यदि भूखंड इंटरैक्टिव हैं (यदि कोई बदलता है तो वे सिंक में रहेंगे)।

वैकल्पिक रूप से, आप पहले की तुलना में दूसरे धुरी की वाई-सीमा मैन्युअल रूप से सेट कर सकते हैं। उदाहरण:

from pylab import * 

x = arange(0.0, 2.0, 0.01) 
y1 = 3*sin(2*pi*x) 
y2 = sin(2*pi*x) 

figure() 
ax1 = subplot(211) 
plot(x, y1, 'b') 

subplot(212) 
plot(x, y2, 'g') 
ylim(ax1.get_ylim())  # set y-limit to match first axis 

show() 

alt text