씨본 플롯이 표시되지 않음


205

나는 매우 간단한 것을 잊어 버릴 것이라고 확신하지만 Seaborn과 일할 특정 음모를 얻을 수는 없습니다.

만약 내가한다면:

import seaborn as sns

그런 다음 matplotlib을 사용하여 평소대로 만드는 플롯은 Seaborn 스타일을 얻습니다 (배경에 회색 격자가 있음).

그러나 다음과 같은 예제 중 하나를 수행하려고하면

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 함수는 PairGrid 객체를 반환하지만 플롯은 표시되지 않습니다.

matplotlib이 올바르게 작동하는 것처럼 보이고 Seaborn 스타일이 다른 matplotlib 플롯에 적용되기 때문에 약간 혼란 스럽지만 Seaborn 기능은 아무것도하지 않는 것 같습니다. 아무도 문제가 무엇인지 아는 사람이 있습니까?


12
간단히 말해 ... ipython %matplotlib inline을 사용하는 경우 인라인 백엔드를 지정 하기 위해 호출 해야합니다. 그렇지 않으면 sns.plt.show()플롯을 별도의 창으로 렌더링하기 위해 호출 할 수 있습니다.
— Jakob

답변:


360

seaborn을 사용하여 작성된 플롯은 일반 matplotlib 플롯과 같이 표시해야합니다. 이것은을 사용하여 수행 할 수 있습니다

plt.show()

matplotlib의 기능.

원래 seaborn ( sns.plt.show()) 에서 이미 가져온 matplotlib 객체를 사용하도록 솔루션을 게시 했지만 이것은 나쁜 습관으로 간주됩니다. 따라서 matplotlib.pyplot 모듈을 직접 가져 와서 플롯을

import matplotlib.pyplot as plt
plt.show()

IPython 노트북을 사용하는 경우 인라인 백엔드를 호출하여 각 플롯 후에 show를 호출 할 필요가 없습니다. 각각의 마법은

%matplotlib inline

4
여전히 대화 형으로 표시된 sns 플롯을 얻지 못합니다. sns.plt.show ()가 작동하지 않습니다. 그러나 인라인으로 변경하면 플롯이 표시되지만 대화 형은 아닙니다. 왜 그런지 알아?
— 사용자 3317704

당신은 같은 것을 사용하여 백엔드를 지정을 시도 할 수 있습니다 %matplotlib qt, %matplotlib gtk, %matplotlib tk등 참조 %matplotlib?자세한 내용은
— 야콥

17
seaborn 페이지의 예제에는 sns.plt.show () 명령이 없다는 것이 정말 귀찮습니다. 그들은이 초등 무엇을 어떻게 잊을 수 있습니까?
— Michael Hecht

@MichaelHecht plt.show ()의 부족은 어떻게 든 이 문제 에서 해결되었습니다 . 불만 사항을 해결할 수 있습니다. 어쩌면 그들은 문서에 추가 할 것입니다.
— Jakob

@Jakob은 Jupyter (아나콘다를 통해)에서 %matplotlib inline항상 적용되도록 구성 파일의 일부 에이 마법 을 추가하는 방법이 있습니까? 아니면 항상 새 통합 문서에 추가해야합니까?
— 왜 theqq

41

나는이 질문에 상당히 규칙적으로 도달하고 내가 찾은 것을 찾는 데 항상 시간이 걸립니다.

import seaborn as sns
import matplotlib.pyplot as plt

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

참고 : Python 2에서는 Python 3에서는 사용할 수 sns.plt.show()없지만 Python 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'
— weberc2

@ weberc2 수정되었습니다. 이 문제는 Python 3에서만 발생했습니다.sns.plt
— Martin Thoma

19

혼란을 피하기 위해 (의견에 일부가있는 것처럼 보입니다). Jupyter를 사용한다고 가정합니다.

%matplotlib inline> 노트북 내부 에 줄거리를 표시합니다

sns.plt.show()> 노트북 외부 에 플롯을 표시합니다.

%matplotlib inline것 일거에 sns.plt.show() 플롯 표시한다는 의미에서 IN 심지어 노트북 sns.plt.show()이라고합니다.

그리고 네, 설정에 라인을 포함시키는 것은 쉽습니다.

IPython Notebook에서 % matplotlib 인라인 자동 실행

그러나 실제 코드에서 가져 오기와 함께 유지하는 것이 더 나은 규칙으로 보입니다.


스파크 노트?
— technazi

8

이것은 나를 위해 일했다

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

4

내 충고는 단지

plt.figure()그리고 일부 sns 줄거리를 제공하십시오. 예를 들어

sns.distplot(data).

그림은 표시되지 않지만 모양을 최대화하면 그림을 볼 수 있습니다.


라인 plt.figure()플롯을 만들기 전에 그림 ( ) 을 만드는 것을 잊었고 플롯이 나타나지 않은 이유를 이해하지 못했습니다. 감사합니다!
— Sander Vanden Hautte

2

Jupyter 노트북 대신 IPython 콘솔 (사용할 수없는 위치) 을 플롯하고 반복적 %matplotlib inline으로 실행하지 않으려는 경우 다음을 사용 plt.show()하여 IPython 콘솔을 시작할 수 있습니다 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

코드 스 니펫의 스타일을 알기 위해 Jupyter Notebook 대신 IPython을 사용하고 있다고 가정합니다.

GitHub 의이 문제 에서 2016 년 IPython 회원은 "Jupyter 커널 인 경우에만 작동"할 때만 차트 표시가 작동 함을 분명히했습니다. 따라서 %matplotlib inline작동하지 않습니다.

방금 동일한 문제가 발생하여 Jupyter Notebook을 시각화에 사용하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.