पायथन का उपयोग करके दो भूखंडों को एक साथ कैसे बनाया जाए?


94

मुझे matplotlib पर निम्नलिखित उदाहरण मिला:

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')


plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

मेरा प्रश्न यह है: मुझे भूखंडों के साथ-साथ बदलने की क्या आवश्यकता है?

जवाबों:


148

अपनी सबप्लॉट सेटिंग बदलें:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

इसके लिए पैरामीटर subplotहैं: पंक्तियों की संख्या, स्तंभों की संख्या, और आप वर्तमान में कौन से सबप्लॉट हैं। तो 1, 2, 1इसका मतलब है "एक 1-पंक्ति, 2-कॉलम आंकड़ा: पहले सबप्लॉट पर जाएं।" फिर 1, 2, 2"1-पंक्ति, 2-कॉलम आंकड़ा" का अर्थ है: दूसरे सबप्लॉट पर जाएं।

आप वर्तमान में 2-पंक्ति, 1-कॉलम (यानी, एक दूसरे के ऊपर) लेआउट के लिए पूछ रहे हैं। आपको इसके बजाय 1-पंक्ति, 2-स्तंभ लेआउट के लिए पूछना होगा। जब आप करेंगे, तो परिणाम होगा:

अगल-बगल की साजिश

सबप्लोट्स के ओवरलैप को कम करने के लिए, आप एक में किक करना चाहते हैं:

plt.tight_layout()

शो से पहले। उपज:

नैटर साइड बाय प्लॉट


45

इस पृष्ठ को देखें: http://matplotlib.org/examples/pylab_examples/subplots_pemo.html

plt.subplotsसमान है। मुझे लगता है कि यह बेहतर है क्योंकि यह आंकड़ा के मापदंडों को सेट करना आसान है। पहले दो तर्क लेआउट को परिभाषित करते हैं (आपके मामले में 1 पंक्ति, 2 कॉलम), और अन्य पैरामीटर जैसे आकार आकार जैसी विशेषताएं बदलते हैं:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 3))
axes[0].plot(x1, y1)
axes[1].plot(x2, y2)
fig.tight_layout()

यहाँ छवि विवरण दर्ज करें


1
क्या कथानक को व्यापक और उच्चतर बनाने का एक तरीका भी है?
हेवेनबर्ग93

मेरा मतलब यह नहीं है कि सराहनीय plt.xlim / ylim
Hei93enberg93

5
मैं उपयोग करने का सुझाव दूंगा plt.subplots। आप figsizeआकृति के आकार को परिभाषित करने के लिए तर्क निर्दिष्ट कर सकते हैं । के रूप में plt.subplots(1, 2, figsize=(20, 4))। अन्यथा, आप पहले आकृति और आकृति के आकार को परिभाषित कर सकते हैं plt.figure(figsize=(20, 4)):।
व्यस्त

किसी कारण से, मुझे एक खाली डेटा मिलता है जब मैं "plt.savefig ('.... png')" सबप्लॉट को बचाने की कोशिश करता हूं। Im शुरुआत में एक ही कोड umsing (मैं केवल जोड़ा plt.figure (figsize = (7, 3)))।
Hei .enberg93

आप बुला रहे हैं plt.savefigके बाद plt.show? यदि हां, तो यह आपकी समस्या है।
1944
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.