본문 바로가기
파이썬

파이썬 Seaborn에서 막대 위에 백분율을 추가하는 방법은 무엇입니까?

by º기록 2020. 11. 20.
반응형

다음 카운트 플롯에서 막대 위에 백분율을 어떻게 배치합니까?

import seaborn as sns
sns.set(style="darkgrid")
titanic = sns.load_dataset("titanic")
ax = sns.countplot(x="class", hue="who", data=titanic)


예를 들어 "First"의 경우 각 막대 위에 총 First men / total First, 총 First women / total First 및 총 First children / total First를 원합니다.

내 설명이 명확하지 않은 경우 알려주십시오.

감사!

 

해결 방법

 

sns.barplot matplotlib.pyplot.bar 처럼 명시 적으로 barplot 값을 반환하지 않습니다 (마지막 단락 참조).하지만 아무것도 플로팅하지 않은 경우 위험 할 수 있습니다. 축의 모든 패치 가 값이라고 가정합니다. 그런 다음 barplot 함수가 계산 한 부분합을 사용할 수 있습니다.

from matplotlib.pyplot import show
import seaborn as sns
sns.set(style="darkgrid")
titanic = sns.load_dataset("titanic")
total = float(len(titanic)) # one person per row 
#ax = sns.barplot(x="class", hue="who", data=titanic)
ax = sns.countplot(x="class", hue="who", data=titanic) # for Seaborn version 0.7 and more
for p in ax.patches:
    height = p.get_height()
    ax.text(p.get_x()+p.get_width()/2.,
            height + 3,
            '{:1.2f}'.format(height/total),
            ha="center") 
show()

생산하다


다른 접근 방식은 명시 적으로 하위 합계를 수행하는 것입니다. 훌륭한 pandas 를 사용하고 matplotlib 를 사용하여 플롯하고 스타일을 직접 지정합니다. ( matplotlib 플로팅 함수를 사용하는 경우에도 sns 컨텍스트에서 많은 스타일을 얻을 수 있습니다. 시도해보세요-)

 

참조 페이지 https://stackoverflow.com/questions/31749448

 

 

반응형

댓글