Python Library/Matplotlib

[Matplotlib - Python] Matplotlib 라이브러리와 꺾은 선 그래프의 여러 설정들

바보1 2022. 2. 9. 19:30

기본 데이터

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic'
matplotlib.rcParams['font.size'] = 15
matplotlib.rcParams['axes.unicode_minus'] = False
x = [1, 2, 3]
y = [2, 4, 8]

 

아 참고로 title에도 따로 폰트와 size를 설정할 수 있습니다.

 

plt.title('꺽은 선 그래프', fontdict={'family': 'HYGungSo-Bold', 'size':20})

참고로 fontdict을 쓰지 않고도, 

plt.title('꺽은 선 그래프', family= 'HYGungSo-Bold', size=20)

이렇게 쓰실 수도 있습니다.


1. plot

  • label

축에 이름을 설정하고 싶으시면, xlabel, ylabel 함수를 쓰시면 됩니다.

 

plt.plot(x,y)
plt.xlabel('X축')
plt.ylabel('Y축')

색깔과 위치도 설정할 수 있습니다.

 

plt.plot(x,y)
plt.xlabel('X축', color = 'red', loc= 'right') # left, center, right
plt.ylabel('Y축', color = '#00aa00', loc = 'top') # top, center, bottom

참고로 color와 loc는 fontdict 안에 써도 무방합니다!

 

그리고 x축의 위치는 left, center, right로 설정할 수 있고, y축의 위치는 top, center, bottom으로 설정할 수 있습니다.


  • ticks

지금은 위처럼 축에 알맞은 숫자가 들어가 있지만, 다른 숫자를 보고 싶으면 어떻게 해야 할까요??

 

xticks, yticks로 설정할 수 있습니다. 

 

plt.plot(x,y)
plt.xticks([1,2,3])
plt.yticks([3,6,9,12])
plt.show()


  • 범례

plot으로 설정할 때, 뒤에 label 속성을 추가해주시면 됩니다.

 

plt.plot(x,y, label = '무슨 데이터')
plt.legend()

누누이 말씀드리지만 파이참에서는 plt.show()를 해주셔야합니다.

 

어쨌든 이렇게 label = 'name'을 쓰시면 해당 그래프에 라벨지가 부여됩니다.

 

이때 legend를 통해서 라벨을 그래프에 붙입니다.

 

라벨의 위치도 설정할 수 있습니다.

 

plt.plot(x,y,label='무슨 데이터')
plt.legend(loc='lower right') # best : default 값(가장 적당한 곳), upper, center, lower, right, center, left

이렇게 upper, loswer, center 등등을 통해 설정할 수도 있고, 

plt.plot(x,y, label='범례')
plt.legend(loc = (0.5, 0.5)) # x축, y축 기준 (0-1 사이)

좌표를 통해 설정할 수도 있습니다.


  • linewidth
plt.plot(x,y, linewidth=5)

linewidth를 설정하시면 라인의 굵기를 설정할 수 있습니다.


  • marker

marker는 꺾어지는 부분에 마크 표시를 해주는 속성 값입니다.

 

 

plt.plot(x,y, marker = 'o')

이렇게 꺾어지는 부분에 o라는 값을 주면 동그랗게 표시합니다.

 

plt.plot(x,y, marker='v')

마커의 종류는 구글에 검색하면 더 자세히 나옵니다.

 

이때 마커만 보이게 하고 싶다면,

plt.plot(x,y, marker='o', linestyle='None')
plt.plot(x,y, marker= 'v', linewidth = 0)

linestyle을 'None' 혹은 linewidth = 0으로 해주시면 됩니다.

 

마커와 관련된 속성 값은,

  • markersize = N => N만큼 마크의 사이즈를 바꿉니다.
  • markeredgecolor = 'color' => color로 마크의 테두리 색깔을 바꿉니다.
  • markerfacecolor = 'color' => color로 마크의 색깔을 바꿉니다.
plt.plot(x,y, marker='X', markersize = 10, markeredgecolor='red', markerfacecolor = 'yellow')


  • linestyle

linestyle은 말 그대로 라인의 스타일입니다.

 

plt.plot(x,y, linestyle = ':')

혹은 '--', '-.'등으로 설정하실 수 있습니다.

 

구글에 검색하면 더 자세히 나옵니다.


  • color

color 속성을 쓰시면 라인의 색깔을 설정할 수 있습니다.

 

plt.plot(x,y, color = 'red')

이때, 축약어를 사용하여 color = 'r' 이런 식으로도 사용 가능합니다. 'b' : 'blue', 'g' : 'green' 등등


  • 포맷

 

plt.plot(x,y,'ro--') # 첫 번째는 색깔, 마커, 라인 스타일

말 그대로 첫 번째는 색깔, 두 번째는 마커, 세 번째는 라인 스타일입니다.

 

안 적으면 None 처리가 됩니다.

plt.plot(x,y,'go') # 안 적으면 None임


  • 축약어

linewidth, markeredgecolor 등등 너무 길다고 생각하면 축약어를 사용하시면 됩니다.

 

plt.plot(x,y, marker='o', mfc = 'red', ms=15, mec='blue', ls = ':')
# mfc = markerfacecolor, ms = markersize, mec = markeredgecolor, ls = linestyle 
# 구글에 matplotlib markerfacecolor mfc 검색하면 나옴

mfc = markerfacecolor, ms = markersize, mec = markeredgecolor, ls = linestyle입니다.


  • 투명도

투명도는 alpha를 통해 설정하실 수 있습니다. 0으로 갈수록 연해집니다.

 

plt.plot(x,y,marker='o', mfc = 'red', ms=10, alpha = 0.3)


  • 그래프 크기

그래프가 작다고 생각하시면, plt.figure()를 사용하시면 됩니다.

 

plt.figure(figsize=(10,5), dpi=200) #dpi = 도트의 크기
plt.plot(x,y)

이렇게 figsize=(10,5)를 하면 가로 10, 세로 5로 맞춰지고, dpi를 설정하여 도트의 크기를 변경할 수 있습니다.


  • 배경색

figure에서 facecolor를 설정하시면 됩니다.

 

plt.figure(facecolor = 'yellow')
plt.plot(x,y)


2. 요약

 

막상 외울게 많다고 생각되시겠지만, 정작 쓰다 보면 적응이 될 것이고, 생각해보면 이 모든 걸 다 쓸 거라고 생각이 들지 않습니다.

 

제 생각에는 이걸 다 공부하는 것보다 필요할 때, 찾아서 쓰는 게 좋을 것 같습니다.

 

감사합니다.

 

지적 환영합니다.

 

 

 

참고 : 나도 코딩