Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python Matplotlib로 강조 표시된 단일 파이로 파이 차트를 그리는 방법은 무엇입니까?

<시간/>

소개..

가장 좋아하는 차트 유형은 무엇입니까? 경영진이나 비즈니스 분석가에게 이 질문을 하면 즉각적인 대답은 파이 차트입니다!. 백분율을 표시하는 매우 일반적인 방법입니다.

그것을 하는 방법..

1. 다음 명령어로 matplotlib를 설치합니다.

pip install matplotlib

2.matplotlib 가져오기

import matplotlib.pyplot as plt

3.임시 데이터를 준비합니다.

tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),('Murray', 3),)

4.다음 단계는 데이터를 준비하는 것입니다.

titles = [title for player, title in tennis_stats]
players = [player for player, title in tennis_stats]

5. 값을 제목으로, 레이블을 플레이어 이름으로 사용하여 원형 차트를 만듭니다.

autopct 매개변수 - 소수점 이하 자리까지 백분율로 표시하도록 값의 형식을 지정합니다. axis('equals') - 원형 차트가 둥글게 보이도록 합니다. .show - 결과 그래프를 표시합니다.

참고- .show를 실행하면 프로그램 실행이 차단됩니다. 창을 닫으면 프로그램이 다시 시작됩니다.

plt.pie(titles, labels=players, autopct='%1.1f%%')
plt.gca().axis('equal')


(-1.1000000175619362,
1.1000000072592333,
-1.1090350248729983,
1.100430247887797)

Python Matplotlib로 강조 표시된 단일 파이로 파이 차트를 그리는 방법은 무엇입니까?

6.그래프를 보여줍니다.

plt.show()

7. 파이를 가지고 놀 수 있는 몇 가지 흥미로운 매개변수가 있습니다. startangle - 웨지/파이의 시작 부분을 회전합니다.
counterclock - 설정하려는 방향, 기본값은 True입니다.

plt.pie(titles, labels=players, startangle=60, counterclock=False,autopct='%1.1f%%')
plt.show()

Python Matplotlib로 강조 표시된 단일 파이로 파이 차트를 그리는 방법은 무엇입니까?

8. 이제 나 같은 사람들에게 백분율은 아무 의미가 없습니다. 코드 깊숙이 숨어 있는 값에 대한 단서가 없는 사람에게 출력 그래프가 전송된다는 것을 기억하십시오. 따라서 백분율 대신 파이의 분할 방식에서 명백히 자명한 실제 제목을 표시할 수 있습니까?

사용자 정의 함수를 작성해야 하기 때문에 약간 까다롭습니다. 아래를 살펴보세요.

나는 사용자 정의 함수 - format_values를 생성하여 키를 백분율로 포함하는 사전을 생성하여 참조 값을 검색할 수 있도록 할 것입니다.

from matplotlib.ticker import FuncFormatter
total = sum(title for player, title in tennis_stats)
print(total)
values = {int(100 * title / total): title for player, title in tennis_stats}
print(values)

def format_values(percent, **kwargs):
value = values[int(percent)]
return '{}'.format(value)

# explode to seperate the pie/wedges.
explode = (0, 0, 0.1, 0.0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)

plt.show()

# the more the value the more farther it will be seperated.
explode = (0.3, 0.2, 0.0, 0.0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)


60
{33: 20, 28: 17, 5: 3}

Python Matplotlib로 강조 표시된 단일 파이로 파이 차트를 그리는 방법은 무엇입니까?

([<matplotlib.patches.Wedge at 0x2279cf8dd00>,
<matplotlib.patches.Wedge at 0x2279cf9b1f0>,
<matplotlib.patches.Wedge at 0x2279cf9b8b0>,
<matplotlib.patches.Wedge at 0x2279cf9bf70>],
[Text(0.6999999621611965, 1.2124355871444568, 'Federer'),
Text(-1.2999999999999945, -1.2171478395895002e-07, 'Nadal'),
Text(0.39420486628845763, -1.0269384223966398, 'Djokovic'),
Text(1.086457194390738, -0.17207778693546258, 'Murray')],
[Text(0.44999997567505484, 0.7794228774500078, '20'),
Text(-0.7999999999999966, -7.490140551320001e-08, '20'),
Text(0.2150208361573405, -0.5601482303981671, '17'),
Text(0.5926130151222206, -0.09386061105570685, '3')])

Python Matplotlib로 강조 표시된 단일 파이로 파이 차트를 그리는 방법은 무엇입니까?

마지막으로 모든 것을 통합합니다.

# imports
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

# prepare data
tennis_stats = (('Federer', 20),('Nadal', 20),('Djokovic', 17),('Murray', 3),)

titles = [title for player, title in tennis_stats]
players = [player for player, title in tennis_stats]

total = sum(title for player, title in tennis_stats)
values = {int(100 * title / total): title for player, title in tennis_stats}

# custom function
def format_values(percent, **kwargs):
value = values[int(percent)]
return '{}'.format(value)

# explode to seperate the pie/wedges.
explode = (0, 0, 0.1, 0.0)
plt.pie(titles, labels=players, explode=explode, autopct=format_values)

plt.show()

Python Matplotlib로 강조 표시된 단일 파이로 파이 차트를 그리는 방법은 무엇입니까?