728x90
반응형
728x90

안녕하세요! 오늘은 파이썬으로 하는 시각화 활용 공통 사항에 대해 포스팅 하려고 합니다.

 

어떤 그래프를 그려도, x축/y축/범례/제목 등은 공통적으로 지정해야 하는데요.

해당 부분이 간단해보이더라도, 시각화에서 상당히 중요한 역할을 하는 경우가 있습니다!

그래서 제가 시각화 하면서 활용했던 부분들을 정리해보려고 합니다('. • ᵕ •. `)

 

그래프 예시는 line plot으로 진행할 예정입니다.

line plot에 대한 자세한 내용이 궁금하신 분들은 아래 링크를 참고해주세요:)

https://yhj9855.com/entry/%EC%8B%9C%EA%B0%81%ED%99%94-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%8B%9C%EA%B0%81%ED%99%94-%ED%99%9C%EC%9A%A9-Line-plot

 

[시각화] 파이썬 시각화 활용 - Line plot

안녕하세요! 오늘은 파이썬으로 하는 시각화 활용 Line plot에 대해 포스팅 하려고 합니다.Line plot이란?시간이나 연속적인 값을 나타낼 때 사용되는 그래프로, 일반적인 선 그래프 입니다.보통 x축

yhj9855.com

 

X축, Y축, 제목 설정하기

  • 기본 설정하기

우선 가장 기본적으로 x축, y축, 제목을 설정하는 것부터 시작하겠습니다!

import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Title")
plt.plot(x, y)

  • 위치 변경하기

x축, y축, 제목은 모두 위치를 변경할 수 있습니다.

위치는 두 가지 방법으로 옮길 수 있습니다.

 

1. pad를 사용하여 간격을 조절

import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.xlabel("X-axis", labelpad=40)
plt.ylabel("Y-axis", labelpad= 30)
plt.title("Title", pad=30)
plt.plot(x, y)

각 축과 제목의 간격이 멀어지신게 보이시나요?

pad 내 숫자가 커질수록 그래프와 축/제목 사이의 간격을 멀게 설정할 수 있습니다.

 

2. 좌표를 설정하여 위치를 조절

제목은 좌표를 설정해서 위치를 조절할 수 있습니다!

축의 경우에도 동일하게 좌표 설정을 할 수 있는데, 좌표대로 잘 움직이지 않아 거의 사용하지 않습니다ㅠㅠ

import numpy as np
import matplotlib.pyplot as plt

# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.sin(x)

fig, ax = plt.subplots(figsize=(6, 4))
# 글씨 크기 조절 가능
plt.xlabel("X-axis", fontsize=14)
plt.ylabel("Y-axis", fontsize=14)
ax.set_title("Title", fontsize=14, x=0.8, y=1.05)
plt.plot(x, y)

제목의 위치가 변경되신게 보이시나요?

x는 좌우의 위치를, y는 상하의 위치를 변경할 수 있습니다!

범례 설정하기

  • 범례란?

범례는 지도나 차트 등에서 참고하라는 뜻으로 나타낸 정보입니다.

파이썬 시각화에서는 보통 각 그래프가 어떤 것을 나타내는지 표기할 때 많이 사용합니다!

 

아래 그래프처럼 노란색과 연두색이 각각 어떤 그래프를 나타내는지 아래쪽에 표기된 것이 범례입니다.

  • 범례 생성하기

보통 범례는 자동으로 생성되는 경우가 많은데, 그래프를 각각 그릴 경우에는 범례가 생성되지 않습니다.

이 때 직접 범례를 설정하는 것도 가능합니다.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.cos(x)
y1 = np.sin(x)

line1, = plt.plot(x, y, color='lightskyblue')
line2, = plt.plot(x, y1, color='lightcoral')

# 범례 직접 설정
plt.legend(handles=[line1, line2], labels=["Cos(x)", "Sin(x)"])

plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Legend Example")

plt.show()

plt.legend(handles=[line1, line2], labels=["Cos(x)", "Sin(x)"]) 여기서 loc = 옵션을 추가하게 되면 범례의 위치를 어느 정도 조정할 수 있습니다!

예를 들어 upper right 옵션으로 하게 되면, 오른쪽 위에 범례가 생성되는데요, 옵션을 정하지 않으면 가장 적당한 위치에 알아서 생성이 됩니다.

  • 위치 변경하기

위의 사진처럼 범례가 자동으로 생성될 때 그래프를 가리는 경우를 자주 접하실 수 있는데요!

이 때 범례 위치를 변경하는 코드는 알아두시면 유용합니다:)

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# 데이터 생성
x = np.linspace(0, 10, 100)
y = np.cos(x)
y1 = np.sin(x)


line1, = plt.plot(x, y, color='lightskyblue')
line2, = plt.plot(x, y1, color='lightcoral')

# 범례 직접 설정
plt.legend(handles=[line1, line2], labels=["Cos(x)", "Sin(x)"], loc='lower right', bbox_to_anchor=(0.81, 0.03))

plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("Legend Example")

plt.show()

범례의 위치가 변경된 게 보이시나요?

지금은 예쁘게 옮긴 건 아니지만, 범례를 자유롭게 움직일 수 있는 것은 굉장히 편리하니 잘 사용해주세요!

먼저 loc 옵션을 조정하여 큰 틀의 위치를 정해주시고, bbox_to_anchor 내 좌표로 세세한 위치를 조정해주시면 됩니다:)

한글 설정하기

마지막으로 각 축, 제목, 범례를 한글로 정하는 방법에 대해서 알려드리겠습니다!

보통 한글로 설정을 하게 되면 아래 사진처럼 한글이 깨져서 나오기 때문에 한글 설정이 먼저 필요합니다.

한글 설정을 위해서는 먼저 한글 폰트를 찾아야 합니다.

C:\Windows\Fonts 해당 경로로 가시면, 컴퓨터에 설치되어 있는 폰트를 보실 수 있습니다!

이제 저희가 사용하고 싶은 폰트를 고르면 되는데, 아쉽게도 모든 폰트를 지원하지는 않습니다ㅠㅠ

 

파이썬은 바탕, 굴림, 궁서체 중 골라서 사용하시는게 안전합니다:) (그래도 이것저것 해보시는 걸 추천 드려요)

위의 글씨체 중 하나를 골라 마우스 오른쪽 클릭→속성→이름 복사를 하시면 되는데, 이름은 .ttc 앞까지만 복사해주세요!

※ 만약에 속성이 나타나지 않는다면, 폰트를 더블 클릭해서 들어가신 다음 진행하시면 됩니다.

간혹 HY시리즈는 이름 그대로를 사용하셔야 되는 경우도 있습니다.

예를 들면 HYPost의 경우 HYPost-Medium, HY고딕의 경우 HYGothic-Medium을 사용합니다.

 

이제 아래 코드를 실행하시게 되면 한글 지원이 가능합니다.

plt.rcParams['font.family'] = 'HYPost-Medium'

이제 한글로 잘 보이는 걸 알 수 있습니다!!

하지만 한글로 변경할 때는 종종 숫자의 마이너스가 깨지는 경우가 있어요ㅠㅠ

해당 경우는 마이너스가 지원되는 한글을 써야하는데, 저는 보통 굴림을 사용합니다.

plt.rcParams['font.family'] = 'gulim'

이제 한글과 마이너스가 모두 잘 보이는 것을 확인할 수 있습니다!

 

여기까지 축, 제목, 범례 활용을 정리해보았습니다!

이것저것 쓰다보니 꽤 길어졌는데요, 시각화는 예쁘면 예쁠수록 도움이 되기 때문에 세세한 부분이라도 잘 활용하시면 좋을 것 같습니다:)

특히 한글 설정 같은 경우, 글씨체가 이쁘면 보기도 좋으니 여러 폰트로 한 번 사용해보시길 추천드려요ദ്ദി・ᴗ・)✧

★읽어주셔서 감사합니다★

 

728x90
반응형

+ Recent posts