सीबोनल प्लाट नहीं दिखा रहा है


205

मुझे यकीन है कि मैं बहुत सरल कुछ भूल रहा हूं, लेकिन मुझे सीबॉर्न के साथ काम करने के लिए कुछ भूखंड नहीं मिल सकते हैं।

यदि मैं करता हूँ:

import seaborn as sns

फिर मैटलपोटलिब के साथ जितने भी भूखंड बनते हैं, उनमें सीबोर्न स्टाइल (बैकग्राउंड में ग्रे ग्रिड के साथ) मिलता है।

हालाँकि, यदि मैं उदाहरणों में से एक करने की कोशिश करता हूँ, जैसे:

In [1]: import seaborn as sns

In [2]: sns.set()

In [3]: df = sns.load_dataset('iris')

In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>

पेयरप्लॉट फ़ंक्शन एक PairGrid ऑब्जेक्ट देता है, लेकिन प्लॉट दिखाई नहीं देता है।

मैं थोड़ा उलझन में हूँ क्योंकि मैटलपोटलिब ठीक से काम कर रहा है, और सीबॉर्न शैलियों को अन्य मेटप्लोटलिब प्लॉट पर लागू किया जाता है, लेकिन सीबॉर्न फ़ंक्शंस कुछ भी नहीं करते हैं। क्या किसी को भी पता है कि क्या समस्या हो सकती है?


12
बस एक त्वरित अनुमान ... यदि आप ipython का उपयोग कर रहे हैं तो आपको %matplotlib inlineइनलाइन बैकएंड को निर्दिष्ट करने के लिए कॉल करने की आवश्यकता है । अन्यथा आप कॉल sns.plt.show()को अलग विंडो में रेंडर करने के लिए कह सकते हैं।
जैकब

जवाबों:


360

सीबॉर्न का उपयोग करके बनाए गए भूखंडों को साधारण मेटप्लोटलिब भूखंडों की तरह प्रदर्शित किया जाना चाहिए। यह का उपयोग करके किया जा सकता है

plt.show()

matplotlib से कार्य करते हैं।

मूल रूप से मैंने सीबोनल ( sns.plt.show()) से पहले से ही आयातित मेटप्लोटिब ऑब्जेक्ट का उपयोग करने के लिए समाधान पोस्ट किया था, हालांकि यह एक बुरा अभ्यास माना जाता है। इसलिए, बस सीधे matplotlib.pyplot मॉड्यूल आयात करें और अपने प्लॉट दिखाएं

import matplotlib.pyplot as plt
plt.show()

यदि IPython नोटबुक का उपयोग किया जाता है, तो प्रत्येक प्लॉट के बाद कॉलिंग शो की आवश्यकता को दूर करने के लिए इनलाइन बैकएंड को लागू किया जा सकता है। संबंधित जादू है

%matplotlib inline

4
मुझे अभी भी इंटरएक्टिव रूप से दिखाया गया एक एसएनएस प्लॉट नहीं मिला है। sns.plt.show () काम नहीं करता है। लेकिन जब मैं इसे इनलाइन में बदलता हूं, तो मुझे प्लॉट मिलता है (लेकिन अंतःक्रियात्मक रूप से नहीं)। कोई विचार क्यों?
उपयोगकर्ता 3317704

आप की तरह कुछ का उपयोग कर एक बैकएंड निर्दिष्ट करने के लिए कोशिश कर सकते %matplotlib qt, %matplotlib gtk, %matplotlib tkआदि को देखने के %matplotlib?बारे में अधिक जानकारी के लिए
जेकब

17
यह वास्तव में कष्टप्रद है कि समुद्री पृष्ठ पर उदाहरणों में कोई कमांड sns.plt.show () नहीं है। वे इस प्राथमिक चीज़ को कैसे भूल सकते हैं?
माइकल हेचट

@MichaelHecht इस मुद्दे में किसी तरह से plt.show () की कमी का सामना किया गया था , आप वहां अपनी शिकायतों का समाधान कर सकते हैं। शायद वे इसे डॉक्स में जोड़ देंगे।
जकॉब

@ जकॉब इस जादू %matplotlib inlineको विन्यास फाइल के वर्जन में जोड़ने के लिए जुपिटर (एनाकोंडा के माध्यम से) के भीतर एक रास्ता है ताकि इसे हमेशा लागू किया जाए? या क्या मुझे हमेशा इसे प्रत्येक नई कार्यपुस्तिका में जोड़ने की आवश्यकता है?
Whytheq

41

मुझे यह सवाल काफी नियमित रूप से आता है और मुझे जो खोजता है उसे ढूंढने में मुझे हमेशा थोड़ा समय लगता है:

import seaborn as sns
import matplotlib.pyplot as plt

plt.show()  # <--- This is what you are looking for

कृपया ध्यान दें: पायथन 2 में, आप भी उपयोग कर सकते हैं sns.plt.show(), लेकिन पायथन 3 में नहीं।

पूरा उदाहरण

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""Visualize C_0.99 for all languages except the 10 with most characters."""

import seaborn as sns
import matplotlib.pyplot as plt

l = [41, 44, 46, 46, 47, 47, 48, 48, 49, 51, 52, 53, 53, 53, 53, 55, 55, 55,
     55, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58,
     58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 61,
     61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62,
     62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 65,
     65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66,
     67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 69, 69, 69, 70, 70,
     70, 70, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73,
     74, 74, 74, 74, 74, 75, 75, 75, 76, 77, 77, 78, 78, 79, 79, 79, 79, 80,
     80, 80, 80, 81, 81, 81, 81, 83, 84, 84, 85, 86, 86, 86, 86, 87, 87, 87,
     87, 87, 88, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 92,
     92, 93, 93, 93, 94, 95, 95, 96, 98, 98, 99, 100, 102, 104, 105, 107, 108,
     109, 110, 110, 113, 113, 115, 116, 118, 119, 121]

sns.distplot(l, kde=True, rug=False)

plt.show()

देता है

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


1
AttributeError: module 'seaborn' has no attribute 'plt'
वेबर 2

@ weberc2 फिक्स्ड। समस्या केवल पायथन 3 में थी, जिसमें नहीं हैsns.plt
मार्टिन थोमा

19

भ्रम से बचने के लिए (जैसा कि टिप्पणियों में कुछ प्रतीत होता है)। आप बृहस्पति पर हैं मान:

%matplotlib inline> प्रदर्शित करता है भूखंडों अंदर नोटबुक

sns.plt.show()> प्रदर्शित करता है भूखंडों बाहर नोटबुक के

%matplotlib inlineहोगा अधिरोहण sns.plt.show() इस अर्थ में कि भूखंडों दिखाया जाएगा में नोटबुक भी जब sns.plt.show()कहा जाता है।

और हाँ, आपके कॉन्फ़िगरेशन में लाइन को शामिल करना आसान है:

IPython नोटबुक में स्वचालित रूप से% matplotlib इनलाइन चलाएं

लेकिन इसे वास्तविक कोड में आयात के साथ रखने के लिए एक बेहतर सम्मेलन लगता है।


स्पार्क नोटबुक्स के लिए?
टेक्नाज़ी

8

इसने मेरे लिए काम किया

import matplotlib.pyplot as plt
import seaborn as sns
.
.
.
plt.show(sns)

4

मेरी सलाह सिर्फ एक देने के लिए है

plt.figure()और कुछ एसएनएस भूखंड दे। उदाहरण के लिए

sns.distplot(data)

हालांकि यह दिखेगा कि यह किसी भी प्लॉट को नहीं दिखाएगा, जब आप आंकड़े को अधिकतम करते हैं, तो आप प्लॉट को देख पाएंगे।


मैं plt.figure()अपना लाइनप्लॉट बनाने से पहले एक आंकड़ा ( ) बनाना भूल गया और समझ नहीं पाया कि प्लॉट क्यों नहीं दिखा। उत्कृष्ट धन्यवाद!
सैंडर वंडेन हट्टे

2

यदि आप ज्यूपिटर नोटबुक के बजाय आईपीथॉन कंसोल (जहां आप उपयोग नहीं कर सकते हैं %matplotlib inline) में प्लॉट करते हैं, और plt.show()बार-बार नहीं चलाना चाहते हैं , तो आप आईपीथॉन कंसोल को इसके साथ शुरू कर सकते हैं ipython --pylab:

$ ipython --pylab     
Python 3.6.6 |Anaconda custom (64-bit)| (default, Jun 28 2018, 17:14:51) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.0.1 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg

In [1]: import seaborn as sns

In [2]: tips = sns.load_dataset("tips")

In [3]: sns.relplot(x="total_bill", y="tip", data=tips) # you can see the plot now

1

अपने कोड स्निपेट की शैली से बताने के लिए, मुझे लगता है कि आप ज्यूपिटर नोटबुक के बजाय आईपीथॉन का उपयोग कर रहे थे।

GitHub पर इस मुद्दे में, यह 2016 में IPython के एक सदस्य द्वारा स्पष्ट किया गया था कि चार्ट का प्रदर्शन केवल तभी काम करेगा जब "केवल तब काम करें जब यह ज्यूपिटर कर्नेल हो"। इस प्रकार %matplotlib inline काम नहीं करेगा।

मैं सिर्फ एक ही मुद्दा रहा था और सुझाव है कि आप विज़ुअलाइज़ेशन के लिए Jupyter नोटबुक का उपयोग करें।

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