matplotlib 을 이용한 선 그래프를 그리고 색상과 마커지정을 해 보았다.
그래프를 보다 보면 아쉬운 부분들이 있어서
보다 보기 좋게 꾸며 보려고 한다.
이전 포스팅은 아래 링크에서 확인 할 수 있으며
마커지정한 부분 까지는 이전 그래프 그리는 방법과 데이터를 그대로 활용 할 예정이다.
https://dioyong.tistory.com/26
matplotlib 을 이용한 선 그래프 그리기(선굵기, 선색상, 마커지정)
이전 포스팅 에서 matplotlib 을 이용해 기본적인 선 그래프를 그려 보았다. 그대로 활용 하기에는 미흡한 점이 많아 선 그래프의 선 색이나 두깨 등을 변경 해서 보다 보기 좋게 꾸미는 방법에 대
dioyong.tistory.com
1. 제목, x y축 간격 조정 및 축 숨기기
- 제목, xy 축 간격 조정
그래프를 보면 제목과 그래프 간격이 너무 붙어 있고 x,y 축 레이블도 마찬가지로 붙어 있어
이 간격을 떨어 트리고자 한다.
캡쳐한 이미지를 보면 차이를 확인 할 수 있다.
fig = plt.figure(figsize=(9,5)) ax = fig.add_subplot() # pad값을 주어서 간격을 조정할 수 있다 수치가 크면 제목과 그래프의 간격이 멀어 진다. plt.title('2022 매출액 ', pad=20, color='purple', fontsize=20) # labelpad값을 주어서 간격을 조정할 수 있다 수치가 크면 텍스트와 그래프 와의 간격이 멀어 진다. plt.xlabel('월', color='b',fontsize=12, labelpad=10) plt.ylabel('매출', color='b',fontsize=12, labelpad=10) plt.grid(alpha=0.5) plt.plot(df['date'], df['sales'], marker='o', ms='8', mec='r', mew='2', mfc='w')


- 그래프 축 숨기기
그래프의 위쪽과 오른쪽 부분 축이 답답해 보여서 이 부분을 안보이도록 hidden 처리하려 한다.
# 그래프를 그릴수 있는 figure 을 만들어 준다. (큰 종이를 만들어 주는것과 비슷한듯하다.) fig = plt.figure(figsize=(9,5)) # fig에 사용할 그래프 하나를 추가한다. 여러개를 추가 할 수도 있다. ax = fig.add_subplot() # 오른쪽 축 숨기기 ax.spines['right'].set_visible(False) # 위쪽 축 숨기기 ax.spines['top'].set_visible(False) # 아래 축 숨김 # ax.spines['bottom'].set_visible(False) # 왼쪽 축 숨김 # ax.spines['left'].set_visible(False) plt.title('2022 매출액 ', pad=40, color='purple', fontsize=20) plt.xlabel('월', color='b',fontsize=12, labelpad=10) plt.ylabel('매출', color='b',fontsize=12, labelpad=10) plt.grid(alpha=0.5) plt.plot(df['date'], df['sales'], marker='o', ms='8', mec='r', mew='2', mfc='w')

y축 값 표시
그래프로 보면 월별 매출액이 증가 하고 있다는 것을 알 수 있다.
그래프에 매출액 수치도 표시 되면 더 좋을것 같아 월별 매출액 값을 text 를 이용해서 표시 하려 한다.
fig = plt.figure(figsize=(9,5)) ax = fig.add_subplot() # 오른쪽 축 숨기기 ax.spines['right'].set_visible(False) # 위쪽 축 숨기기 ax.spines['top'].set_visible(False) # text 함수를 이용해서 그래프에 300을 출력해 보았다. # text(x좌표, y좌표, 출력할내용) ax.text(0,300, '300') plt.title('2022 매출액 ', pad=40, color='purple', fontsize=20) plt.xlabel('월', color='b',fontsize=12, labelpad=10) plt.ylabel('매출', color='b',fontsize=12, labelpad=10) plt.grid(alpha=0.5) plt.plot(df['date'], df['sales'], marker='o', ms='8', mec='r', mew='2', mfc='w')

그림과 같이 출력 된 것을 확인 할 수 있다.
마커와 겹쳐 알아 보기 힘들고 오른쪽으로 정렬이 되어 있어
아래와 같이 이 부분을 수정해 보았다.
fig = plt.figure(figsize=(9,5)) ax = fig.add_subplot() # 오른쪽 축 숨기기 ax.spines['right'].set_visible(False) # 위쪽 축 숨기기 ax.spines['top'].set_visible(False) # y축 값을 증가해 위치를 변경 하였고 정렬 방식을 center 로 하였다. ax.text(0,330, '300', ha='center') plt.title('2022 매출액 ', pad=40, color='purple', fontsize=20) plt.xlabel('월', color='b',fontsize=12, labelpad=10) plt.ylabel('매출', color='b',fontsize=12, labelpad=10) plt.grid(alpha=0.5) plt.plot(df['date'], df['sales'], marker='o', ms='8', mec='r', mew='2', mfc='w')

이제 이걸 12번 반복해서 출력해 주면 된다.
그래프를 변수에 담고 변수의 값을 x, y 좌표로 지정하고 y 값을 출력해 주면 된다.
(df 의 값을 이용해서 x, y 좌표를 지정 해서 sales 값으로 text 를 출력해 주어도 될것 같다.)
# 그림이 그려지는 캔버스를 만들어 준다. fig = plt.figure(figsize=(9,5)) ax = fig.add_subplot() ax.spines['right'].set_visible(False) ax.spines['top'].set_visible(False) line_text = ax.plot(df['date'], df['sales'], marker='o', ms='8', mec='r', mew='2', mfc='w') line_text = line_text[0] for xytext in list(line_text.get_xydata()): ax.text(xytext[0],xytext[1]+50, int(xytext[1]), fontsize=15, ha='center') plt.title('2022 매출액 ', pad=20, color='purple', fontsize=20) plt.xlabel('월', color='b',fontsize=12, labelpad=10) plt.ylabel('매출', color='b',fontsize=12, labelpad=10) plt.grid(alpha=0.5) plt.show()

아래 이전 내용에서 만들 그래프와 비교해서 수정 하기 전과 비교해서 바뀐 부분 들을 확인 할 수 있다.

'데이터시각화' 카테고리의 다른 글
막대 그래프(바그래프) 그리기 (0) | 2023.02.12 |
---|---|
matplotlib 을 이용해 여러개의 선 그래프 그리기 (0) | 2023.02.08 |
주피터 노트북 그래프에서 한글 사용 방법 (0) | 2023.02.02 |
matplotlib 을 이용한 그래프 그리기(제목, 그리드, xy레이블) (0) | 2023.01.31 |
matplotlib 을 이용한 선 그래프 그리기(선굵기, 선색상, 마커지정) (0) | 2023.01.30 |