Deniz dibi araziler görünmüyor


206

Eminim çok basit bir şeyi unutuyorum, ama Seaborn ile çalışmak için belirli araziler bulamıyorum.

Eğer yaparsam:

import seaborn as sns

Daha sonra matplotlib ile her zamanki gibi oluşturduğum tüm araziler, Seaborn stilini (arka planda gri ızgara ile) alır.

Ancak, aşağıdaki gibi örneklerden birini yapmaya çalışırsam:

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>

Pairplot işlevi bir PairGrid nesnesi döndürür, ancak grafik görünmez.

Biraz kafam karıştı, çünkü matplotlib düzgün çalışıyor gibi görünüyor ve Seaborn stilleri diğer matplotlib çizimlerine uygulanır, ancak Seaborn işlevleri hiçbir şey yapmıyor gibi görünüyor. Sorunun ne olabileceği hakkında bir fikri olan var mı?


12
Sadece hızlı bir tahmin ... ipython kullanıyorsanız %matplotlib inline, satır içi arka ucunu belirtmek için aramanız gerekir . Aksi takdirde sns.plt.show(), çizimi ayrı bir pencereye dönüştürmek için çağrı yapabilirsiniz .
Jakob

Yanıtlar:


363

Deniz dibi kullanılarak yaratılan arazilerin sıradan matplotlib grafikleri gibi gösterilmesi gerekir. Bu,

plt.show()

işlev matplotlib.

Başlangıçta, zaten ithal edilen matplotlib nesnesini seaborn ( sns.plt.show()) ' dan kullanma çözümünü yayınladım, ancak bu kötü bir uygulama olarak kabul edilir. Bu nedenle, matplotlib.pyplot modülünü doğrudan içe aktarın ve grafiklerinizi

import matplotlib.pyplot as plt
plt.show()

IPython dizüstü bilgisayar kullanılıyorsa, her çizimden sonra şov çağırma zorunluluğunu ortadan kaldırmak için satır içi arka uç çağrılabilir. İlgili sihir

%matplotlib inline

4
Hala etkileşimli olarak gösterilen bir sns grafiğini almıyorum. sns.plt.show () çalışmıyor. Ama satır içi olarak değiştirdiğimde, komployu alıyorum (ancak etkileşimli değil). Neden olduğu hakkında bir fikrin var mı?
kullanıcı 3317704

gibi bir şey kullanarak bir arka uç belirtmek deneyebilirsiniz %matplotlib qt, %matplotlib gtk, %matplotlib tkvb bkz %matplotlib?fazla bilgi için
Jakob

17
Deniz dibi sayfasındaki örneklerde sns.plt.show () komutunun olmaması gerçekten can sıkıcı bir durum. Bu temel bir şeyi nasıl unutabilirler?
Michael Hecht

@MichaelHecht plt.show () eksikliği bu konuda bir şekilde ele alındı , şikayetlerinizi orada ele alabilirsiniz. Belki de dokümanlara eklerler.
Jakob

@ Jakob, Jupyter'de (Anaconda aracılığıyla) bu sihri %matplotlib inlineher zaman uygulanacak şekilde yapılandırma dosyasının bir bölümüne eklemenin bir yolu var mı? Yoksa her zaman her yeni çalışma kitabına eklemem gerekir mi?
whytheq

41

Bu soruya oldukça düzenli olarak geliyorum ve aradığımı bulmak her zaman biraz zaman alıyor:

import seaborn as sns
import matplotlib.pyplot as plt

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

Lütfen dikkat: Python 2'de de kullanabilirsiniz sns.plt.show(), ancak Python 3'te kullanamazsınız .

Komple Örnek

#!/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()

verir

resim açıklamasını buraya girin


1
AttributeError: module 'seaborn' has no attribute 'plt'
weberc2

@ weberc2 Düzeltildi. Sorun sadece olmayan Python sns.plt
3'teydi

19

Karışıklığı önlemek için (yorumlarda bazıları olduğu gibi). Jupyter'de olduğunuzu varsayarsak:

%matplotlib inline> Görüntüler araziler İÇİ notebook

sns.plt.show()> dizüstü bilgisayarın DIŞINDA grafikleri görüntüler

%matplotlib inlineolacaktır geçersiz kılmak sns.plt.show() araziler görünecek anlamında İÇİNDE bile dizüstü sns.plt.show()denir.

Ve evet, satırı yapılandırmanıza dahil etmek kolaydır:

IPython Not Defteri'nde otomatik olarak% matplotlib satır içi çalıştır

Ancak gerçek koddaki ithalatı bir arada tutmak daha iyi bir kural gibi görünüyor.


Kıvılcım defterleri için mi?
technazi

8

Bu benim için çalıştı

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

4

Benim tavsiyem sadece

plt.figure()ve bazı sns grafiği verin. Örneğin

sns.distplot(data).

Görünüşe rağmen herhangi bir arsa göstermez, Rakamı en üst düzeye çıkardığınızda, arsaları görebileceksiniz.


plt.figure()Çizgimi oluşturmadan önce bir şekil ( ) oluşturmayı unuttum ve planın neden görünmediğini anlamadım. Mükemmel, teşekkürler!
Sander Vanden Hautte

2

İçinde çizmek durumunda ipython konsola (Kullanmadığınız nereye %matplotlib inline) yerine Jupyter defterin ve çalıştırmak istemiyorum plt.show()defalarca IPython konsolu ile başlayabilirsiniz 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

Kod snippet'inizin tarzından bahsetmek için, Jupyter Notebook yerine IPython kullandığınızı düşünüyorum.

GitHub'daki bu sayıda , 2016 yılında bir IPython üyesi tarafından grafiklerin gösterilmesinin yalnızca "sadece bir Jupyter çekirdeği olduğunda çalıştığında" işe yarayacağı açıklandı. Böylece %matplotlib inlineişe yaramaz.

Sadece aynı sorunu yaşıyordum ve görselleştirme için Jupyter Notebook'u kullanmanızı öneririm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.