[python] 씨본 플롯이 표시되지 않음
나는 매우 간단한 것을 잊어 버릴 것이라고 확신하지만 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 기능은 아무것도하지 않는 것 같습니다. 아무도 문제가 무엇인지 아는 사람이 있습니까?
답변
seaborn을 사용하여 작성된 플롯은 일반 matplotlib 플롯과 같이 표시해야합니다. 이것은을 사용하여 수행 할 수 있습니다
plt.show()
matplotlib의 기능.
원래 seaborn ( sns.plt.show()
) 에서 이미 가져온 matplotlib 객체를 사용하도록 솔루션을 게시 했지만 이것은 나쁜 습관으로 간주됩니다. 따라서 matplotlib.pyplot 모듈을 직접 가져 와서 플롯을
import matplotlib.pyplot as plt
plt.show()
IPython 노트북을 사용하는 경우 인라인 백엔드를 호출하여 각 플롯 후에 show를 호출 할 필요가 없습니다. 각각의 마법은
%matplotlib inline
답변
나는이 질문에 상당히 규칙적으로 도달하고 내가 찾은 것을 찾는 데 항상 시간이 걸립니다.
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()
준다
답변
혼란을 피하기 위해 (의견에 일부가있는 것처럼 보입니다). Jupyter를 사용한다고 가정합니다.
%matplotlib inline
> 노트북 내부 에 줄거리를 표시합니다
sns.plt.show()
> 노트북 외부 에 플롯을 표시합니다.
%matplotlib inline
것 일거에 sns.plt.show()
플롯 표시한다는 의미에서 IN 심지어 노트북 sns.plt.show()
이라고합니다.
그리고 네, 설정에 라인을 포함시키는 것은 쉽습니다.
IPython Notebook에서 % matplotlib 인라인 자동 실행
그러나 실제 코드에서 가져 오기와 함께 유지하는 것이 더 나은 규칙으로 보입니다.
답변
이것은 나를 위해 일했다
import matplotlib.pyplot as plt
import seaborn as sns
.
.
.
plt.show(sns)
답변
내 충고는 단지
plt.figure()
그리고 일부 sns 줄거리를 제공하십시오. 예를 들어
sns.distplot(data)
.
그림은 표시되지 않지만 모양을 최대화하면 그림을 볼 수 있습니다.
답변
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
답변
코드 스 니펫의 스타일을 알기 위해 Jupyter Notebook 대신 IPython을 사용하고 있다고 가정합니다.
GitHub 의이 문제 에서 2016 년 IPython 회원은 “Jupyter 커널 인 경우에만 작동”할 때만 차트 표시가 작동 함을 분명히했습니다. 따라서 %matplotlib inline
작동하지 않습니다.
방금 동일한 문제가 발생하여 Jupyter Notebook을 시각화에 사용하는 것이 좋습니다.