2015-02-26 26 views
6

मैं एक प्लॉटिंग फ़ंक्शन बनाने की कोशिश कर रहा हूं जो इनपुट प्लॉट की संख्या इनपुट के रूप में लेता है और pylab.subplots और sharex=True विकल्प का उपयोग करके उन्हें प्लॉट करता है। यदि आवश्यक भूखंडों की संख्या विषम है, तो मैं अंतिम पैनल को हटाना चाहता हूं और उपरोक्त पैनल पर टिक लेबल को बल देना चाहता हूं। मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है और एक ही समय में sharex=True विकल्प का उपयोग नहीं कर रहा है। सबप्लॉट्स की संख्या काफी बड़ी हो सकती है (> 20)।subplots की विषम संख्या के साथ matplotlib

यहां नमूना कोड है। इस उदाहरण में मैं i=3 पर xtick लेबल को मजबूर करना चाहता हूं।

import numpy as np 
import matplotlib.pylab as plt 

def main(): 
    n = 5 
    nx = 100 
    x = np.arange(nx) 
    if n % 2 == 0: 
     f, axs = plt.subplots(n/2, 2, sharex=True) 
    else: 
     f, axs = plt.subplots(n/2+1, 2, sharex=True) 
    for i in range(n): 
     y = np.random.rand(nx) 
     if i % 2 == 0: 
      axs[i/2, 0].plot(x, y, '-', label='plot '+str(i+1)) 
      axs[i/2, 0].legend() 
     else: 
      axs[i/2, 1].plot(x, y, '-', label='plot '+str(i+1)) 
      axs[i/2, 1].legend() 
    if n % 2 != 0: 
     f.delaxes(axs[i/2, 1]) 
    f.show() 


if __name__ == "__main__": 
    main() 

उत्तर

7

आप इस के साथ अपने main समारोह में पिछले if की जगह हैं:

if n % 2 != 0: 
    for l in axs[i/2-1,1].get_xaxis().get_majorticklabels(): 
     l.set_visible(True) 
    f.delaxes(axs[i/2, 1]) 

f.show() 

यह चाल करना चाहिए:

Plot

संबंधित मुद्दे