2015-07-17 8 views
7

मेरे पास पाइथन में 3 सबप्लॉट्स के साथ मैटलप्लिब प्लॉट है, सभी 1 कॉलम में। मैं के माध्यम से कोई स्पेस होनाकुछ सबप्लॉट्स के बीच अंतर, लेकिन सभी

gridspec.GridSpec(3, 1, height_ratios=[1, 3, 3]) 

:

मैं वर्तमान के साथ एक subplot की ऊंचाई को नियंत्रित

plt.subplots_adjust(hspace=0.0) 

लेकिन मैं पंक्ति 2 और केवल 3 के बीच कुछ अंतर डाल करना चाहते हैं।

अन्य उत्तर से एक में, मैंने पढ़ा है कि मैं कुछ ऐसा कर सकते हैं:

gs1.update(left=0.05, right=0.48, wspace=0) 

लेकिन मैं सच में समझ में नहीं आता क्या हो रहा है। क्या कोई मुझे कुछ और जानकारी दे सकता है?

उत्तर

12

जब आप अपडेट कहते हैं, तो आप उन पैरामीटर को उस विशेष ग्रिडस्पेक के सभी सबप्लॉट्स पर लागू कर रहे हैं। यदि आप अलग-अलग सबप्लॉट्स के लिए विभिन्न पैरामीटर का उपयोग करना चाहते हैं, तो आप कई ग्रिडस्पेक्स बना सकते हैं। हालांकि, आपको यह सुनिश्चित करना होगा कि वे सही आकार हैं और ओवरलैप नहीं करते हैं। इसका एक तरीका है नेस्टेड ग्रिडस्पेक्स के साथ है। चूंकि नीचे दो भूखंडों की कुल ऊंचाई शीर्ष पर 6 गुना है, बाहरी ग्रिडस्पेक का ऊंचाई अनुपात [1, 6] होगा।

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 


def do_stuff(cell): #just so the plots show up 
    ax = plt.subplot(cell) 
    ax.plot() 
    ax.get_xaxis().set_visible(False) 
    ax.get_yaxis().set_visible(False) 
plt.subplots_adjust(hspace=0.0) 
#make outer gridspec 
outer = gridspec.GridSpec(2, 1, height_ratios = [1, 6]) 
#make nested gridspecs 
gs1 = gridspec.GridSpecFromSubplotSpec(1, 1, subplot_spec = outer[0]) 
gs2 = gridspec.GridSpecFromSubplotSpec(2, 1, subplot_spec = outer[1], hspace = .05) 
for cell in gs1: 
    do_stuff(cell) 
for cell in gs2: 
    do_stuff(cell) 
plt.show() 

Plot with three subplots

+0

यह मेरे लिए काम किया, पुष्टि कर सकते हैं – jimh

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