Matplotlib에서 롤리팝 플롯 그리기
롤리팝 플롯(lollipop plot)은 막대그래프보다 시각적으로 깔끔하게 여러 항목의 값을 비교할 수 있는 차트입니다. Matplotlib에서는 stem() 함수를 활용해 손쉽게 그릴 수 있으며, 아래 단계를 따라 진행하면 됩니다.
그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
2차원 표 형태의 데이터를 담는 데이터프레임 df를 생성합니다. pandas의 DataFrame은 크기가 가변적이며 서로 다른 자료형을 함께 저장할 수 있습니다.
sort_values() 메서드를 사용해 값을 기준으로 정렬된 데이터프레임을 만듭니다.
데이터프레임 인덱스 길이에 해당하는 범위(range) 리스트를 생성합니다.
정렬된 데이터프레임을 사용해 줄기 플롯(stem plot)을 그립니다.
xticks() 메서드로 x축 눈금 위치와 레이블을 설정합니다.
show() 메서드를 호출해 최종 그림을 화면에 표시합니다.
예제 코드
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
df = pd.DataFrame({'group': list(map(chr, range(65, 85))), 'values': np.random.uniform(size=20)})
ordered_df = df.sort_values(by='values')
my_range = range(1, len(df.index) + 1)
plt.stem(ordered_df['values'])
plt.xticks(my_range, ordered_df['group'])
plt.show()코드 설명
위 예제에서는 A부터 T까지 20개의 알파벳 그룹에 대해 0과 1 사이의 난수 값을 생성합니다. sort_values(by='values')로 값을 오름차순 정렬하면, 줄기 플롯이 값이 작은 순서부터 큰 순서대로 배치되어 어떤 그룹의 값이 큰지 한눈에 파악할 수 있습니다. 마지막으로 x축 눈금을 알파벳 레이블로 지정해 각 줄기가 어떤 그룹에 해당하는지 명확하게 보여줍니다.
실행 결과
