पंडों की साजिश नहीं दिखाती


81

स्क्रिप्ट (IPython) में इसका उपयोग करते समय, कुछ भी नहीं होता है, अर्थात प्लॉट विंडो प्रकट नहीं होती है:

import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()

जोड़ते समय भी time.sleep(5), अभी भी कुछ नहीं है। क्यों?

क्या यह करने का एक तरीका है, मैन्युअल रूप से matplotlib को कॉल किए बिना ?


क्या आपको कोई आउटपुट मिलता है ts.plot()?
इट्स डे

1
आपका क्या मतलब है "मैन्युअल रूप से कॉल matplotlib"? सामान्य तरीका है import matplotlib.pyplot as plt,plt.show()
अधिकतम oo

1
@itzy: ऐसा कुछ भी नहीं होता है ts.plot(), जब प्रोग्राम इसके तुरंत बाद समाप्त हो जाता है। यहां तक ​​कि अगर मैं time.sleep(10)कुछ नहीं जोड़ता हूं, तो भी प्रदर्शित किया जाता है
बसज

1
@ maxymoo: मैंने सोचा था कि .plot()एक पांडा ऑब्जेक्ट पर करने से मेरे लिए सब कुछ संभाल लिया जाएगा (अर्थात पांडा मेरे बजाय matplotlib का काम करता है): इस उदाहरण को देखें ।
बसज

जवाबों:


159

एक बार जब आप अपना प्लॉट बना लेते हैं, तो आपको showइसे matplotlib बताने की आवश्यकता होती है। चीजों को करने का सामान्य तरीका वहां से आयात matplotlib.pyplotऔर कॉल करना showहै:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
plt.show()

चूँकि आपने ऐसा नहीं करने का अनुरोध किया है (क्यों?), आप निम्नलिखित का उपयोग कर सकते हैं [नोट: यह अब नए संस्करणों के साथ काम करने के लिए प्रकट नहीं होता है pandas:

import numpy as np
import pandas as pd
ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts.plot()
pd.tseries.plotting.pylab.show()

लेकिन आप जो कुछ भी कर रहे हैं matplotlibवह कहीं न कहीं ऐसा है जो आयात किया गया है pandasऔर showवहीं से उसी फ़ंक्शन को कॉल कर रहा है।

क्या आप matplotlibचीजों को गति देने के प्रयास में कॉल से बचने की कोशिश कर रहे हैं ? यदि ऐसा है तो आप वास्तव में कुछ भी तेजी नहीं कर रहे हैं, क्योंकि pandasपहले से ही आयात pyplot:

python -mtimeit -s 'import pandas as pd'
100000000 loops, best of 3: 0.0122 usec per loop

python -mtimeit -s 'import pandas as pd; import matplotlib.pyplot as plt'
100000000 loops, best of 3: 0.0125 usec per loop

अंत में, आपके द्वारा टिप्पणियों में लिंक किए गए उदाहरण का कारण कॉल करने की आवश्यकता नहीं matplotlibहै, क्योंकि यह iPython notebookएक स्क्रिप्ट में नहीं, बल्कि इंटरएक्टिव रूप से चलाया जा रहा है ।


जब मैं 'pd.tseries.plotting.pylab.show ()' चलाता हूं तो मुझे "padnas.tseries 'मिलता है, जिसमें कोई विशेषता प्लॉटिंग नहीं है, क्या यह पुराना है? आपने लिखा था कि 2015 में ..
सेबस्टियन नील्स

हां, ऐसा लग रहा है कि मैटलोप्लिब का पिछला दरवाजा अब नहीं है। मैं अभी भी वैसे भी पहला विकल्प
सुझाता हूं

2
धन्यवाद। मुझे लगता है कि एपीआई डिजाइन बेहतर हो सकता है। यह अजीब है कि हमें ppl.plot का उपयोग करने के लिए matplotlib के बारे में जानना चाहिए
Phil

5

यदि आप उपयोग कर रहे हैं matplotlib,और फिर भी, चीजें iPython नोटबुक (या Jupyter Lab और साथ ही) में दिखाई नहीं देती हैं, तो याद रखें matplotlibकि नोटबुक में इनलाइन विकल्प सेट करें ।

import matplotlib.pyplot as plt

%matplotlib inline

फिर निम्नलिखित कोड निर्दोष रूप से काम करेगा:

fig, ax = plt.subplots(figsize=(16,9));
change_per_ins.plot(ax=ax, kind='hist')

यदि आप इनलाइन विकल्प सेट नहीं करते हैं तो यह दिखाई नहीं देगा और plt.show()अंत में जोड़कर आपको डुप्लिकेट आउटपुट मिलेंगे।


0

मैंने बस किया

import matplotlib.pyplot as plt

%matplotlib inline

और लाइन जोड़ें

plt.show()

df.plot () के बगल में और इसके लिए अच्छी तरह से काम किया


1
कृपया सम्मिलित करने के लिए उपयोग किए जाने वाले पर्यावरण को शामिल करें %matplotlib inline(यह मानक पायथन नहीं है जो किसी स्क्रिप्ट में उपयोग किया जा सकता है)।
बसज

%matplotlib inlineipython / jupyter नोटबुक में उपयोग किया जाता है ...
यतिन

हाँ, अगर आपको pycharm की तरह एक आईडीई का उपयोग कर रहा हूँ (मैं उपयोग कर रहा हूँ) तो% matplotlib इनलाइन जोड़ने की कोई आवश्यकता नहीं है।
देवसेना

0

अन्य उत्तरों में आयात matplotlib.pyplotऔर / या कुछ दूसरे फ़ंक्शन को मैन्युअल रूप से कॉल करना शामिल है ।

इसके बजाय, आप इसकी कॉन्फ़िगरेशन फ़ाइलों के साथ इंटरैक्टिव मोडmatplotlib में कॉन्फ़िगर कर सकते हैं ।

बस लाइन जोड़ें

interactive: True

matplotlibrcनिम्न स्थानों में से एक में बुलाए गए फ़ाइल में:

  • वर्तमान कार्य निर्देशिका में
  • द्वारा निर्दिष्ट मंच विशिष्ट उपयोगकर्ता निर्देशिका में matplotlib.get_configdir()
    • यूनिक्स जैसी प्रणाली पर, आमतौर पर /home/username/.config/matplotlib/
    • विंडोज पर C:\\Documents and Settings\\username\\.matplotlib\\
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.