소개..
가장 좋아하는 차트 유형은 무엇입니까? 경영진이나 비즈니스 분석가에게 이 질문을 하면 즉각적인 대답은 파이 차트입니다!. 백분율을 표시하는 매우 일반적인 방법입니다.
그것을 하는 방법..
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)
6.그래프를 보여줍니다.
plt.show()
7. 파이를 가지고 놀 수 있는 몇 가지 흥미로운 매개변수가 있습니다. startangle - 웨지/파이의 시작 부분을 회전합니다.
counterclock - 설정하려는 방향, 기본값은 True입니다.
plt.pie(titles, labels=players, startangle=60, counterclock=False,autopct='%1.1f%%') plt.show()
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}
([<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')])
마지막으로 모든 것을 통합합니다.
예
# 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()