समान IPython नोटबुक सेल में एक से अधिक चार्ट बनाएं


87

मैंने अपने आईपीथॉन नोटबुक के साथ शुरुआत की है

ipython notebook --pylab inline

यह एक सेल में मेरा कोड है

df['korisnika'].plot()
df['osiguranika'].plot()

यह ठीक काम कर रहा है, यह दो लाइनें खींचेगा, लेकिन एक ही चार्ट पर।

मैं प्रत्येक लाइन को एक अलग चार्ट पर आकर्षित करना चाहूंगा। और यह बहुत अच्छा होगा अगर चार्ट एक दूसरे के बगल में होंगे, एक के बाद एक नहीं।

मुझे पता है कि मैं दूसरी पंक्ति को अगले सेल में रख सकता हूं, और फिर मुझे दो चार्ट मिलेंगे। लेकिन मैं चार्ट को एक दूसरे के करीब चाहूंगा, क्योंकि वे एक ही तार्किक इकाई का प्रतिनिधित्व करते हैं।

जवाबों:


88

पहले कई कुल्हाड़ियों को बनाओ और उन्हें पंडों के प्लॉट फ़ंक्शन में पास करें, जैसे:

fig, axs = plt.subplots(1,2)

df['korisnika'].plot(ax=axs[0])
df['osiguranika'].plot(ax=axs[1])

यह अभी भी आपको 1 आंकड़ा देता है, लेकिन एक दूसरे के बगल में दो अलग-अलग भूखंडों के साथ।


3
यह काम कर रहा है। अब मैं छवि का आकार बदलना चाहता हूँ। मैं इसे अंजीर, कुल्हाड़ियों = plt.subplots (1,2, figsize = (15, 5)) के साथ कर सकता हूं। क्या पिक्सेल में छवि का आकार निर्धारित करने का कोई तरीका है?
वेबरोड

1
अंजीर का उपयोग वास्तव में तरीका है, इंच में आकार thats। कितने पिक्सेल जो डीपीआई पर निर्भर करते हैं, जो स्क्रीन पर प्रदर्शित करने के लिए तय किया गया है। लेकिन बचत के लिए इसे डीपीआई कीवर्ड जोड़कर सेट किया जा सकता है।
Rutger Kassies

2
यह बिल्कुल सटीक नहीं है कि डीपीआई ऑन-स्क्रीन डिस्प्ले के लिए तय किया गया है (अच्छी तरह से यह है और यह नहीं है)। IPython अपने पिक्सेल आकार के आधार पर छवियों को प्रदर्शित करता है, और उस पिक्सेल आकार को matplotlib में फिगर द्वारा इंच में गुणा करके निर्धारित किया जाता है savefig.dpi। इनलाइन आंकड़े फाइलों को लिखने के रूप में एक ही savefig पथ का उपयोग करते हैं।
13'13

यह इंगित करने के लिए धन्यवाद, मुझे नहीं पता था कि यह उसी तरह काम करता है। हालांकि यह अधिक सुविधाजनक नहीं होगा, अगर प्रदर्शन डीपीआई (साथ ही) को ध्यान में रखा गया हो, क्योंकि यह आंकड़ा निर्माण में आसान है। Savefig.dpi के लिए मैं किसी अन्य तरीके से नहीं जानता mpl.rcParams['savefig.dpi'] = 120। प्रदर्शन डीपीआई के लिए बहुत सारे स्थानों में एक कीवर्ड होता है, जैसे plt.figure(dpi=120), लेकिन अब इसे नजरअंदाज कर दिया गया है, इसलिए इसके बारे में मेरी गलत धारणा तय हो रही है।
रटगर कस्सी

101

आप प्रत्येक प्लॉट के बाद शो () फ़ंक्शन को भी कॉल कर सकते हैं। जैसे

   plt.plot(a)
   plt.show()
   plt.plot(b)
   plt.show()

1
महान, लेकिन प्लॉट चित्र स्थान कैसे सेट करें, जैसे (2,2) या (1,2)?
15

3
इस विकल्प के साथ, भूखंड आवश्यक रूप से एक के बाद एक दिखाई देते हैं। समग्र लेआउट पर अधिक नियंत्रण के लिए, pyplot.subplots()जाने का रास्ता है।
एरिक ओ लेबिगॉट

1
मैंने लिंक हटा दिया।
टोबिप्पे

12

कुछ इस तरह:

import matplotlib.pyplot as plt
... code for plot 1 ...
plt.show()
... code for plot 2...
plt.show()

ध्यान दें कि यह भी काम करेगा यदि आप seabornप्लॉटिंग के लिए पैकेज का उपयोग कर रहे हैं :

import matplotlib.pyplot as plt
import seaborn as sns
sns.barplot(... code for plot 1 ...) # plot 1
plt.show()
sns.barplot(... code for plot 2 ...) # plot 2
plt.show()

11

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

df.plot(subplots=True)

Dataframe दो श्रृंखला से भी अधिक है, और आप केवल उन दो प्लॉट करने के लिए चाहते हैं, आप बदलना भी होगा dfसाथ df[['korisnika','osiguranika']]


2

मुझे नहीं पता कि यह नई कार्यक्षमता है, लेकिन यह अलग-अलग आंकड़ों पर साजिश करेगा:

df.plot(y='korisnika')
df.plot(y='osiguranika')

जबकि यह एक ही आंकड़े पर साजिश करेगा: (ऑप में कोड की तरह)

df.plot(y=['korisnika','osiguranika'])

मुझे यह प्रश्न मिला क्योंकि मैं पूर्व पद्धति का उपयोग कर रहा था और चाहता था कि वे एक ही आंकड़े पर साजिश करें, इसलिए आपका प्रश्न वास्तव में मेरा उत्तर था।

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