Pycharm साजिश नहीं दिखाती है


100

Pycharm निम्नलिखित कोड से साजिश नहीं दिखाता है:

import pandas as pd
import numpy as np
import matplotlib as plt

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))

ts = ts.cumsum()    
ts.plot()

क्या होता है कि एक खिड़की एक सेकंड से भी कम समय के लिए दिखाई देती है, और फिर फिर से गायब हो जाती है।

एक ही कोड पर Pyzo IEP IDE (समान दुभाषिया का उपयोग करके) का उपयोग करके कथानक अपेक्षित रूप से प्रदर्शित होता है।

... तो समस्या Pycharm पर कुछ सेटिंग के साथ होना चाहिए। मैंने python.exe और pythonw.exe दोनों का उपयोग करने की कोशिश की है, दोनों एक ही परिणाम के साथ दुभाषिया के रूप में।

यह मेरा sys_info है:

C:\pyzo2014a\pythonw.exe -u C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevconsole.py 57315 57316
PyDev console: using IPython 2.1.0import sys; print('Python %s on %s' % (sys.version, sys.platform))
Python 3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, 13:02:30) [MSC v.1600 64 bit (AMD64)] on win32
sys.path.extend(['C:\\Users\\Rasmus\\PycharmProjects\\untitled2'])
In[3]: import IPython
print(IPython.sys_info())
{'commit_hash': '681fd77',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': 'C:\\pyzo2014a\\lib\\site-packages\\IPython',
 'ipython_version': '2.1.0',
 'os_name': 'nt',
 'platform': 'Windows-8-6.2.9200',
 'sys_executable': 'C:\\pyzo2014a\\pythonw.exe',
 'sys_platform': 'win32',
 'sys_version': '3.4.1 |Continuum Analytics, Inc.| (default, May 19 2014, '
                '13:02:30) [MSC v.1600 64 bit (AMD64)]'}

6
plt.pyplot.show()काम करता है ?
पादरी कनिंघम

1
ऐसा नहीं होता। जब वास्तव में 'plt.pyplot.show ()' चल रहा हो तो यह काम नहीं करता है। क्या मुझे 'pyplot' के बजाय कुछ और लिखना चाहिए? (noob यहाँ)।
रासमस लार्सन

जब आप pycharm में कोड चलाते हैं तो क्या होता है?
पादरी कनिंघम

जब मैं फ़ाइल चलाता हूं तो वही होता है: एक विंडो जल्दी से प्रकट होती है और गायब हो जाती है, कंसोल प्रिंटिंग होती है: एक्जिट कोड के साथ समाप्त होने वाली प्रक्रिया। 0. जब मैं इसे कंसोल को भेजता हूं तो विंडो दिखाई देती है और ठहर जाती है, लेकिन विंडो में कुछ भी नहीं खींचा जाता है, यह सिर्फ सफेद है। खिड़की का लेबल "चित्र 1 (प्रतिसाद नहीं)" है
रासमस लार्सेन

आपको इसे जोड़ने के लिए matplotlib.pyplot जोड़ना चाहिए। संदर्भ: stackoverflow.com/a/29042575/4989929
रौनक पोरिया

जवाबों:


103

महज प्रयोग करें

plt.show()

यह कमांड सिस्टम को Pycharm में प्लॉट खींचने के लिए कहता है।

उदाहरण:

plt.imshow(img.reshape((28, 28)))
plt.show()

4
यह वास्तव में आश्चर्यजनक है - यह मेरे लिए काम करता है, और दूसरों में से कोई भी नहीं करता है। क्या आश्चर्य की बात है, मुझे जुपिटर नोटबुक में plt.show () की आवश्यकता नहीं थी, क्यों नहीं पता कि PyCharm में अलग-अलग व्यवहार क्यों है
अंबरीश

मुझे भी। मुझे बृहस्पति नोटबुक में इसकी आवश्यकता नहीं थी
खराब

मैं हमेशा उसे कॉल करना भूल जाता हूं। यह सिस्टम को वास्तव में इसे pycharm में खींचने के लिए कहता है। नोटबुक डिफ़ॉल्ट रूप से ऑटो कॉल ड्रा और प्रिंट कार्य करेगा। मुझे लगता है कि यह इस तरह से बनाया गया था कि जल्दी से प्रोटोटाइप के लिए।
एमएनएम

अगर मैं plt.draw()बाद में आंकड़ा अपडेट कर रहा हूं तो मुझे क्या उपयोग करना होगा? plt.show()ठीक काम करता है, लेकिन plt.draw()PyCharm में कुछ भी नहीं दिखाता है।
CGFoX

1
हो सकता है कि आपको नोटबुक में इसकी आवश्यकता न हो क्योंकि आपने ऐसा कुछ किया था %matplotlib inline। @CGFox, ड्रा स्पष्ट रूप से मेमोरी को रेंडर करने के लिए है लेकिन स्क्रीन (या फ़ाइल) में प्रदर्शित नहीं होता है। प्लॉट दिखाने के लिए आपको या तो plt.pause (0.1) की आवश्यकता है, या कोड में कुछ अन्य बिंदु पर plt.show (रोक = सही) को कॉल करने के लिए उन्हें प्रस्तुत करने के लिए
xaviersjs

54

मुझे लगता है कि यह पुराना है, लेकिन मुझे लगा कि मैं अन्य यात्रियों के लिए एक गलत धारणा को साफ कर दूंगा। सेटिंग plt.pyplot.isinteractive()का Falseमतलब है कि विशिष्ट कमांड (यानी plt.pyplot.show()) को खींचने के लिए भूखंड को खींचा जाएगा । सेटिंग plt.pyplot.isinteractive()का Trueमतलब है कि हर pyplot( plt) कमांड ड्रॉ कमांड (यानी plt.pyplot.show()) को ट्रिगर करेगा । तो आप जिस चीज की संभावना तलाश रहे plt.pyplot.show()थे, वह ग्राफ प्रदर्शित करने के लिए आपके कार्यक्रम के अंत में है।

एक साइड नोट के रूप में आप निम्न आयात आदेश के import matplotlib.pyplot as pltबजाय इन बयानों को थोड़ा छोटा कर सकते हैं matplotlib as plt


14
मेरे फ़ंक्शन के अंत में plt.show (ब्लॉक = ट्रू) जोड़ना मेरे लिए काम किया है। स्पष्टीकरण के लिए धन्यवाद। (पायथन 3.x, पाइक्रोम 2016.1.4, उबंटू)
समरएला

यह मेरे लिए (Python 2.7, Pycharm 2016.3, Ubuntu 16.04) के लिए काम करता है: "plt के रूप में matplotlib.pyplot आयात करें", फिर फंक्शन प्लॉट DataFrame से जैसे कि "corr_data [col] .plot (kind =" bar "), figsize =। (8, 5), ग्रिड = सही, रंग = "आर", शीर्षक = कर्नल) "और समारोह छोड़ने से पहले," plt.show () "
ताका

34

मुझे भी यही समस्या थी। चेक विथर plt.isinteractive()सही है। इसे 'गलत' पर सेट करने से मुझे मदद मिली।

plt.interactive(False)

9
कॉलिंग plt.show (ब्लॉक = ट्रू) ने मेरे लिए एक बार चार्ट दिखाने में मदद की। लेकिन चार्ट विंडो को बंद करने के बाद भी कंसोल को ब्लॉक कर दिया गया था।
DanT

plt.interactive (गलत) ने मेरे लिए PyCharm में किया
काल्पनिक

मेरे पास अब पायथन स्थापित नहीं है, इसलिए मुझे नहीं पता कि यह मेरे लिए काम करेगा, लेकिन चूंकि यह दूसरों के लिए काम करता है इसलिए मैं इस उत्तर को स्वीकार करूंगा (मुझे उम्मीद है कि स्टैकओवरफ्लो-नियमों के अनुसार यह सही है)
रासमस लार्सन

8
सही समाधान के लिए plt.show (block = True) सेट करना है जैसा कि @charlie ने नीचे सुझाया है। इस पंक्ति को जोड़ने के बाद plt.interactive () फ़्लैग का मान प्रदर्शित होने वाले प्लॉट पर कोई असर नहीं पड़ा।
शीतदंश

यह मेरे लिए `` क्लस्टर_आईडी के लिए काम नहीं कर रहा था। 0.5) plt.interactive (गलत) plt.show (ब्लॉक = ट्रू) `
मोना जलाल

29

मैंने विभिन्न समाधानों की कोशिश की लेकिन आखिरकार मेरे लिए क्या काम किया plt.show(block=True)myDataFrame.plot()इसे प्रभावी करने के लिए आपको कमांड के बाद इस कमांड को जोड़ना होगा । यदि आपके पास एक से अधिक प्लॉट हैं तो अपने कोड के अंत में कमांड जोड़ें। यह आपको हर उस डेटा को देखने की अनुमति देगा, जिसे आप प्लॉट कर रहे हैं।


2
यह मेरे लिए किया। स्वीकृत उत्तर होना चाहिए। Plt.interactive () के साथ मेसिंग ने कुछ भी नहीं किया
शीतदंश

मैं सहमत हूं क्योंकि इससे मुझे भी मदद मिली। इंटरेक्टिव मोड को गलत पर सेट करना और पर्यावरण चर में "DISPLAY = TRUE" जोड़ना मदद नहीं करता।
फैबियो

22
import matplotlib
matplotlib.use('TkAgg')

मेरे लिये कार्य करता है। (PyCharm / OSX)


यह मेरे लिए विंडोज 10 पर भी काम कर चुका है, जब plt.show()PyCharm (2020.1) के नए संस्करण में इससे अधिक मदद नहीं मिली।
कॉर्बी

14

मैं Pycharm (सामुदायिक संस्करण 2017.2.2) के अपने संस्करण में परीक्षण करता हूं, आपको निम्नलिखित के रूप में दोनों plt.interactive (गलत) और plt.show (ब्लॉक = ट्रू) की घोषणा करने की आवश्यकता हो सकती है:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 6.28, 100)

plt.plot(x, x**0.5, label='square root')
plt.plot(x, np.sin(x), label='sinc')

plt.xlabel('x label')
plt.ylabel('y label')

plt.title("test plot")

plt.legend()

plt.show(block=True)
plt.interactive(False)

ऐसा सुनने के लिए क्षमा करें। मुझे लगता है कि यह भी Pycharm 2017.3 (सामुदायिक संस्करण) में काम करता है। क्या आप Pycharm के नए संस्करण का उपयोग करने की कोशिश कर सकते हैं?
tairen

हाय, सरिया, इसके लिए खेद है। मैं इसे उबंटू ओएस के साथ अपने Pycharm 2018.1.2 (सामुदायिक संस्करण) में परीक्षण करता हूं। यह भी काम करता है।
tairen

नमस्ते, यह मैकहो कैटालिना के साथ पाइक्रोम 2019.3 के लिए काम करता है
मिलाद नूरीज़ादे

13

मैंने एक उपाय खोज लिया है। यह मेरे लिए काम किया:

import numpy as np
import matplotlib.pyplot as plt

points = np.arange(-5, 5, 0.01)
dx, dy = np.meshgrid(points, points)
z = (np.sin(dx)+np.sin(dy))
plt.imshow(z)
plt.colorbar()
plt.title('plot for sin(x)+sin(y)')
plt.show()

लेकिन मैं अब एक नई समस्या का सामना कर रहा हूं। एक बार एक नई विंडो में प्लॉट तैयार हो जाने के बाद, प्लॉट नहीं चलने के बाद मैंने जो नया कोड जोड़ा है, जब तक मैं नई खुली हुई विंडो को बंद नहीं करता।
ध्रुव

2
प्रश्न में जो महत्वपूर्ण रेखा गायब थी, वह है plt.show ()
Yoav

6

फोन करने के तुरंत बाद

plt.imshow() 

कॉल

plt.show(block = True)

आपको इमेज के साथ matplotlib पॉपअप मिलेगा।

यह एक अवरुद्ध रास्ता है। जब तक पॉप बंद नहीं होगा तब तक आगे की स्क्रिप्ट नहीं चलेगी।


यह वही है जिसे मैं देख रहा था।
नेल्सनगॉन

5

मेरे साथ समस्या यह थी कि मैटलपोटलिब गलत बैकएंड का उपयोग कर रहा था। मैं डेबियन जेसी का उपयोग कर रहा हूं।

कंसोल में मैंने निम्न कार्य किया:

import matplotlib
matplotlib.get_backend()

परिणाम था: 'एग', जबकि यह 'टीकेएजी' होना चाहिए।

समाधान सरल था:

  1. पाइप के माध्यम से matplotlib की स्थापना रद्द करें
  2. उपयुक्त लाइब्रेरी स्थापित करें: sudo apt-get install tcl-dev tk-dev python-tk python3-tk
  3. फिर से पाइप के माध्यम से matplotlib स्थापित करें।

5

बस जोड़ें plt.pyplot.show(), यह ठीक रहेगा।

सबसे अच्छा समाधान SciView को अक्षम करना है।


4

मैंने PyCharm 2017.1.2 पर अपने संस्करण में परीक्षण किया। मैंने इंटरेक्टिव (ट्रू) और शो (ब्लॉक = ट्रू) का इस्तेमाल किया।

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

4

उपरोक्त में से किसी ने भी मेरे लिए काम नहीं किया लेकिन निम्नलिखित ने किया:

  1. चेकबॉक्स में चेकबॉक्स को अक्षम करें (टूल विंडो में प्लॉट दिखाएं) settings > Tools > Python Scientific

  2. मुझे त्रुटि मिली No PyQt5 module foundPyQt5उपयोग की स्थापना के साथ आगे बढ़े :

    sudo apt-get install python3-pyqt5

खबरदार कि कुछ केवल पहले कदम के लिए पर्याप्त है और काम करता है।


1
कृपया स्पष्ट करें कि पहला कदम अभी भी समाधान हो सकता है, क्योंकि यह मेरे लिए काम करता है। इस तरह कहा गया, @ amir1122 के दूसरे दोहराए गए उत्तर का अस्तित्व है। जो निश्चित रूप से ठीक है, और आपने अभी भी मेरा उत्थान किया है।
लॉरेंज

1
@Lorenz। आपके सुझाव के अनुसार अपडेट किया गया है जो समझ में आता है।
अब्दुलरहमानलियाकत

चरण 1 काम करता है, लेकिन एक वर्कअराउंड की तरह लगता है। मुझे अपने मामले में संदेह है कि ऐसा इसलिए है क्योंकि मेरे पास पाइथन (3.6, 3.7, और 3.8) के कई संस्करण तैर रहे हैं।
योशिय्याह योद

2

मेरा env: macOS & anaconda3

यह मेरे लिए काम करता है:

matplotlib.use('macosx')

या इंटरैक्टिव मोड:

matplotlib.use('TkAgg')

Matplotlib.pyplot
Zoe L

2

मुझे यह समस्या थी और मैं इसे हल कर सकता था, आप मेरे तरीके का परीक्षण कर सकते हैं .. सेटिंग से "टूल विंडो में शो प्लॉट" को अक्षम करें -> उपकरण -> अजगर वैज्ञानिक


1
यह उत्तर दो साल पहले ही दिया गया था (जैसे stackoverflow.com/a/52221178/466862 पर )। पुराने प्रश्नों का उत्तर देते समय, सुनिश्चित करें कि आप या तो एक नया, अलग समाधान या बहुत बेहतर स्पष्टीकरण का उत्तर दें।
मार्क रोटेवेल 13

यह @ अब्दुल रहमानलियाकत के जवाब को दोहरा रहा है, लेकिन यह कम से कम स्पष्ट रूप से बताता है कि यह एक संभावित समाधान हो सकता है। मैंने पहले दोहराव के कारण इसे डाउनवोट किया। अब मैंने उत्थान किया, बस इसलिए कि दूसरा उत्तर स्पष्ट रूप से नहीं बताता है कि यहां यह एकल चरण पहले से ही इसे हल कर सकता है, इसके बजाय यह एक त्रुटि का उल्लेख करता है जो मेरे मामले में प्रकट नहीं हुआ था।
लॉरेंज

1

DanT की टिप्पणी ने मेरे लिए यह तय किया, GTKagg बैकएंड के साथ linux पर pycharm के साथ matplotlib। Matplotlib आयात करने पर मुझे निम्नलिखित त्रुटि मिलेगी:

>>> import matplotlib as mpl

Backend GTKAgg is interactive backend. Turning interactive mode on.
Failed to enable GUI event loop integration for 'gtk'

जब कुछ ऐसा करने की साजिश रच रहा हो:

from matplotlib import pyplot as plt
plt.figure()
plt.plot(1,2)
plt.show()

एक आंकड़ा स्क्रीन पॉप अप होगी, लेकिन कोई चार्ट दिखाई नहीं देगा। का उपयोग करते हुए:

plt.show(block=True)

ग्राफिक को सही ढंग से प्रदर्शित करता है।


1

मेरे मामले में, मैं निम्नलिखित कार्य करना चाहता था:

    plt.bar(range(len(predictors)), scores)
    plt.xticks(range(len(predictors)), predictors, rotation='vertical')
    plt.show()

यहां समाधानों के मिश्रण के बाद, मेरा समाधान निम्नलिखित आदेशों से पहले जोड़ना था:

    matplotlib.get_backend()
    plt.interactive(False)
    plt.figure()

निम्नलिखित दो आयातों के साथ

   import matplotlib
   import matplotlib.pyplot as plt

ऐसा लगता है कि मेरे मामले में सभी आदेश आवश्यक हैं, ElCapitan और PyCharm 2016.2.3 के साथ MBP। अभिवादन!


1

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


1

गैर-संवादात्मक एनवी में, हमें plt.show (ब्लॉक = ट्रू) का उपयोग करना होगा


1

जो लोग एक आईडीई के अंदर एक स्क्रिप्ट चला रहे हैं (और एक इंटरैक्टिव वातावरण में काम नहीं कर रहे हैं जैसे कि पायथन कंसोल या नोटबुक), मैंने पाया कि यह सबसे सहज और सरल समाधान है:

plt.imshow(img)
plt.waitforbuttonpress()

यह आंकड़ा दिखाता है और तब तक इंतजार करता है जब तक उपयोगकर्ता नई विंडो पर क्लिक नहीं करता है। तभी यह स्क्रिप्ट को फिर से शुरू करता है और बाकी कोड चलाता है।


1

मैं यहाँ मेरे लिए काम कर रहे कुछ अन्य सुझावों का एक संयोजन प्राप्त करने में सक्षम था, लेकिन केवल फिर plt.interactive(False)से Trueऔर फिर से टॉगल करते हुए ।

plt.interactive(True)
plt.pyplot.show()

इससे मेरे प्लॉट चमक उठेंगे। फिर Falseदेखने की अनुमति के लिए सेटिंग ।

plt.interactive(False)
plt.pyplot.show()

जैसा कि उल्लेख किया गया है कि मेरा कार्यक्रम तब तक बाहर नहीं निकलेगा जब तक सभी खिड़कियां बंद नहीं हो जातीं। यहाँ मेरे वर्तमान रन पर्यावरण पर कुछ विवरण हैं:

Python version 2.7.6
Anaconda 1.9.2 (x86_64)
(default, Jan 10 2014, 11:23:15) 
[GCC 4.0.1 (Apple Inc. build 5493)]
Pandas version: 0.13.1

0

एक संपत्ति pycharm के लिए निर्धारित करने की आवश्यकता है।

import matplotlib.pyplot as plt

plt.interactive(False)  #need to set to False

dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)

plt.show()

0

आयात बदलें:

import matplotlib.pyplot as plt

या इस लाइन का उपयोग करें:

plt.pyplot.show()

0

मैं उबंटू का उपयोग कर रहा हूं और मैंने @Arie के रूप में ऊपर कहा है लेकिन इस लाइन के साथ केवल टर्मिनल में:

sudo apt-get install tcl-dev tk-dev python-tk python3-tk

और यह काम किया!


0

Pycharm में, कई बार Matplotlib.plot दिखाई नहीं देगा।

तो बुला के बाद plt.show()SciView के लिए दाईं ओर टूलबार में सही। SciView के अंदर प्रत्येक उत्पन्न भूखंडों को संग्रहीत किया जाएगा।


0

जब मैं हिस्टोग्राम की साजिश रचने की कोशिश कर रहा था और मेरे लिए काम कर रहे नीचे के बिंदुओं के ऊपर मुझे त्रुटि का सामना करना पड़ रहा था।

ओएस: मैक कैटालिना 10.15.5

Pycharm संस्करण: सामुदायिक संस्करण 2019.2.3

पायथन संस्करण: 3.7

  1. मैंने नीचे के रूप में (से -) आयात विवरण बदल दिया

से:

import matplotlib.pylab as plt

सेवा:

import matplotlib.pyplot as plt

  1. और नीचे दिए गए कथानक का विवरण (मेरी कमांड फ़ॉर्म pyplot को plt में बदल दिया)

से:

plt.pyplot.hist(df["horsepower"])

# set x/y labels and plot title
plt.pyplot.xlabel("horsepower")
plt.pyplot.ylabel("count")
plt.pyplot.title("horsepower bins") 

सेवा :

plt.hist(df["horsepower"])

# set x/y labels and plot title
plt.xlabel("horsepower")
plt.ylabel("count")
plt.title("horsepower bins")
  1. हिस्टोग्राम प्रदर्शित करने के लिए plt.show का उपयोग करें

plt.show()

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