본문 바로가기
데이터분석/시각화

[파이썬 데이터 분석] 시각화, pyplot과 seaborn 라이브러리 튜토리얼 - 1

by CodingKwon 2021. 6. 20.

파이썬 데이터 분석

시각화, pyplot과 seaborn 라이브러리 튜토리얼 - 1


이 주피터노트북은 Matplotlib에 대한 전반적인 설명을 담고 있습니다.


1. Matplotlib Intro

Matplotlib란?

  • 시각화 유틸리티 역할을하는 Python의 저수준 그래프 플로팅 라이브러리
  • 오픈 소스이며 자유롭게 사용 가능

2. Matplotlib Getting Started

2-1. Matplotlib 설치

  • pip install matplotlib을 입력후 실행시키면 matplotlib이 설치됩니다.
# matplotlib 설치!
# pip install matplotlib

2-2. Matplotlib 가져 오기

  • import matplotlib를 사용하면 matplotlib을 불러올 수 있습니다.
import matplotlib

2-3. Matplotlib 버전 확인

  • version 을 이용하면 matplotlib의 버전을 확인할 수 있습니다.
  • (단, import matplotlib을 먼저 해주어야 합니다.)
print(matplotlib.__version__)
3.2.2

3. Matplotlib Pyplot

  • 대부분의 Matplotlib 유틸리티는 pyplot하위 모듈 아래에 있으며 일반적으로 plt별칭 으로 가져옵니다.
  • (plt말고 다른 별칭을 사용할 수도 있습니다.)
import matplotlib.pyplot as plt
  • 앞으로 matplotlib을 풀네임으로 안적고 plt만 입력해도 사용 가능합니다.
import matplotlib.pyplot as plt # plt 별칭 사용
import numpy as np

xpoints = np.array([0, 10]) # x축 범위
ypoints = np.array([0, 300]) # y축 범위

plt.plot(xpoints, ypoints) # plot 그리기
plt.show() # 화면에 표시

4. Matplotlib Plotting

4-1. x 및 y 포인트 플로팅

  • plot()함수 : 다이어그램에서 포인트 (마커)를 그리는 데 사용됩니다.
    • plot() 함수는 점과 점을 선으로 이어줍니다.
  • 매개변수 1 : x 축의 점을 포함하는 배열
  • 매개변수 2 : y 축의 점을 포함하는 배열
  다음은 (3,3)에서 (7,10)의 선을 그려보겠습니다.
import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([3, 7]) # x축 범위
ypoints = np.array([3, 10]) # y축 범위

plt.plot(xpoints, ypoints) # 선 그리기
plt.show() # 화면에 표시

4-2. 선없이 플로팅

  • 선으로 플로팅 하는 것이 아닌 점으로 플로팅 하는 방식입니다.
  • plot에 매개변수 'o'를 주면 됩니다.
  다음은 (3,3)에서 (7,10)에 점을 그려보겠습니다.
import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([3, 7])
ypoints = np.array([3, 10])

plt.plot(xpoints, ypoints, 'o') # 'o' 매개변수 추가
plt.show()

4-3. 여러 포인트 사용

  • 여러 개의 포인트를 그립니다.
  • 두 축에 동일한 포인트가 있어야 합니다.
  다음은 (1,3), (4,7), (5,2), (8,10)에 포인트를 주었습니다.
import matplotlib.pyplot as plt
import numpy as np

xpoints = np.array([1, 4, 5, 8])
ypoints = np.array([3, 7, 2, 10])

plt.plot(xpoints, ypoints)
plt.show()

4-4. 기본 X- 포인트

  • x 축에 점을 지정하지 않으면 기본값 0, 1, 2, 3 처럼 값을 x축에 순차적으로 얻습니다.
  • y 점의 길이에 따라 달라집니다.
  다음은 x축 지정 없이 y축만 [4, 10, 1, 7, 4, 5]를 주었습니다.
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([4, 10, 1, 7, 4, 5])

plt.plot(ypoints)
plt.show()

5. Matplotlib Markers

  • 키워드 인수 marker를 사용하여 지정된 마커로 각 지점을 강조 할 수 있습니다.

5-1. Markers

  • 예시1) 각 점을 원으로 표시
    • marker = 'o'
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, marker = 'o')
plt.show()

  • 예시2) 각 점을 별모양으로 표시
    • marker = '*'
plt.plot(ypoints, marker = '*')
plt.show()

  • 여러가지 Marker 옵션
Marker 모양 예시
'o' circle 예시
'*' Star 예시
'.' Point 예시
',' Pixel 예시
'x' X 예시
'X' X (filled) 예시
'+' Plus 예시
'P' Plus (filled) 예시
's' Square 예시
'D' Diamond 예시
'd' Diamond (thin) 예시
'p' Pentagon 예시
'H' Hexagon 예시
'h' Hexagon 예시
'v' Triangle Down 예시
'^' Triangle Up 예시
'<' Triangle Left 예시
'>' Triangle Right 예시
'1' Tri Down 예시
'2' Tri Up 예시
'3' Tri Left 예시
'4' Tri Right 예시
'|' Vline 예시
'_' Hline 예시

5-2.형식 문자열 fmt

  • 바로 가기 문자열 표기법 매개 변수를 사용하여 마커를 지정할 수도 있습니다.
  • 이 매개 변수는라고도하며 fmt다음 구문으로 작성됩니다.
    • marker|line|color
예시 : 원형, 점선, 빨간색
형식 : 'o:r'
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, 'o:r') # 원형,점선,빨간색
plt.show()

5-2-1 fmt : 라인참조

  • fmt 매개 변수에서 선 값을 생략하면 선 이 플롯되지 않습니다.
Line Syntax 모양 예시
'-' Solid line 예시
':' Dotted line 예시
'--' Dashed line 예시
'-.' Dashed/dotted line 예시

5-2-2 fmt : 색상참조

Line Syntax 색상 예시
'r' Red 예시
'g' Green 예시
'b' Blue 예시
'c' Cyan 예시
'm' Magenta 예시
'y' Yellow 예시
'k' Black 예시
'w' White 예시

5-3 마커 크기

  • 키워드 인수 markersize를 사용하여 마커의 크기를 설정할 수 있습니다.
  • 더 짧은 버전 ms을 사용하여 마커의 크기를 설정할 수 있습니다.
다음은 마커의 크기를 20으로 설정한 예시입니다.
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, marker = 'o', ms = 20) # 마커의 크기를 20으로 설정 (ms)
plt.show()

5-4 마커 색상

5-4-1. 가장자리 색상 (EDGE)

  • 키워드 인수 markeredgecolor을 사용 하여 마커 가장자리의 색상을 설정할 수 있습니다.
  • 더 짧은 방식으로 mec을 사용하여 마커 가장자리의 색상을 설정할 수 있습니다.
다음은 마커의 가장자리의 색상을 빨간색으로 바꿉니다.
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, marker = 'o', ms = 20, mec = 'r') # 마커 가장자리 색상 변경 (빨강)
plt.show()

5-4-2. 가장자리 내부 색상 (FACE)

  • 키워드 인수 markerfacecolor을 사용하여 마커 가장자리 내부의 색상을 설정할 수 있습니다.
  • 더 짧은 방식으로 mfc을 사용하여 마커 가장자리 내부의 색상을 설정할 수 있습니다.
다음은 마커의 가장자리 내부의 색상을 빨간색으로 바꿉니다.
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, marker = 'o', ms = 20, mfc = 'r') # 마커 가장자리 내부 색상 변경 (빨강)
plt.show()

5-4-3. 가장자리 색상 및 가장자리 내부 색상 변경

  • 가장자리 색상 : mec / markeredgecolor
  • 가장자리 내부 색상 : mfc / markerfacecolor
다음은 가장자리 색상은 Green, 가장자리 내부 색상은 Yellow로 변경하였습니다.
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, marker = 'o', ms = 20, mec = 'g', mfc = 'y') # 가장자리 색 : Green, 가장자리 내부 색상 : Yellow
plt.show()

5-4-4. 기타 색상 지정 방법

  • 16 진수 색상 값
    • ex) '#DAA520'
  • HTML Color Names
    • ex) 'BlueViolet'
# 16 진수 색상 값
plt.plot(ypoints, marker = 'o', ms = 20, mec = '#8B008B', mfc = '#FFFAF0')
[<matplotlib.lines.Line2D at 0x7f11ab642190>]

# HTML Color Names
plt.plot(ypoints, marker = 'o', ms = 20, mec = 'LightCoral', mfc = 'LightGoldenRodYellow')
[<matplotlib.lines.Line2D at 0x7f11ab754f50>]

6. Matplotlib Line

6-1. 선 스타일

  • 키워드 인자 linestyle를 사용하여 플로팅 된 선의 스타일을 변경할 수 있습니다.
  • 더 짧은 방식으로 ls를 사용하여 플로팅 된 선의 스타일을 변경할 수 있습니다.
  • 선스타일은 2가지 방식으로 사용할 수 있습니다.
    1. 풀네임
      • ex) 'dotted'
    2. 짧은 구문
      • ex) ':'
Style 짧은 구문 예시
'solid' (default) '-' 예시
'dotted' ':' 예시
'dashed' '--' 예시
'dashdot' '-.' 예시
'None' '' or ' ' 예시
다음은 파선 사용에 대한 예시입니다.
# 파선 사용
plt.plot(ypoints, linestyle = 'dashed')
[<matplotlib.lines.Line2D at 0x7f11ab889490>]

6-2. 선 색상

  • 키워드 인수 color을 사용하여 라인의 색상을 설정할 수 있습니다.
  • 더 짧은 방식으로 c을 사용하여 라인의 색상을 설정할 수 있습니다.
  • 선 색상은 3가지 방식으로 사용 할 수 있습니다.
    1. 일반 색상 참조
      • ex) 'r'
    2. 16 진수 색상 값
      • ex) '#DAA520'
    3. HTML Color Names
      • ex) 'BlueViolet'
      다음은 선의 색을 'BlueViolet'로 변경한 예시입니다.
# 선 색 변경 'BlueViolet'
plt.plot(ypoints, c = 'BlueViolet')
[<matplotlib.lines.Line2D at 0x7f11ab9dae10>]

6-3. 선폭

  • 키워드 인수 linewidth을 사용하여 선 너비를 변경할 수 있습니다.
  • 더 짧은 방식으로 lw을 사용하여 선 너비를 변경할 수 있습니다.
  • 값은 포인트 단위의 float입니다.
다음은 20.5pt 너비의 선으로 플롯한 결과입니다.
# 선의 너비 변경 : 20.5pt
import matplotlib.pyplot as plt
import numpy as np

ypoints = np.array([3, 8, 1, 10])

plt.plot(ypoints, linewidth = '20.5') # 20.5pt변경
plt.show()

6-4. 여러 줄 나타내기

  • 더 많은 plt.plot()함수를 추가한다면 그만큼 더 많은 줄을 나타낼 수 있습니다.
y1 = np.array([3, 8, 1, 10]) # 선1
y2 = np.array([6, 2, 7, 11]) # 선2

plt.plot(y1) # 선1
plt.plot(y2) # 선2

plt.show()

  • 두 선의 x 및 y 점 값을 지정하여 두 선을 그릴 수도 있습니다.
x1 = np.array([0, 1, 2, 3])
y1 = np.array([3, 8, 1, 10])
x2 = np.array([0, 1, 2, 3])
y2 = np.array([6, 2, 7, 11])

plt.plot(x1, y1, x2, y2)
plt.show()

7. Matplotlib Labels and Title

7-1. 플롯에 대한 레이블 만들기

  • Pyplot을 사용하면 xlabel()ylabel()함수를 사용하여 x 축 및 y 축에 대한 레이블을 설정할 수 있습니다 .
다음은 x에 "Average Pulse", y축에 "Calorie Burnage"를 추가한 예시입니다.
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

plt.plot(x, y)

plt.xlabel("Average Pulse") # x축 레이블
plt.ylabel("Calorie Burnage") # y축 레이블

plt.show()

7-2. 플롯에 대한 제목 만들기

  • Pyplot을 사용하면 title()함수를 사용하여 플롯의 제목을 설정할 수 있습니다.
다음은 제목에 "Sports Watch Data"을 추가한 예시입니다.
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

plt.plot(x, y)

plt.title("Sports Watch Data") # 플롯의 제목을 설정
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")

plt.show()

7-3. 제목 및 레이블에 대한 글꼴 속성 설정

  • fontdict에 매개 변수 xlabel(), ylabel(), title()에 글꼴 속성(제목, 레이블 세트)을 지정해줄 수 있습니다.
사용방법
1. font1 = {'family':'serif','color':'blue','size':20}   처럼 글꼴 속성을 지정해둡니다.
2. fontdict = font1 fontdict   에 설정해둔 font1을 넣습니다.
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

font1 = {'family':'serif','color':'blue','size':20} # 글꼴 속성 설정 1
font2 = {'family':'serif','color':'darkred','size':15} # 글꼴 속성 설정 2

plt.title("Sports Watch Data", fontdict = font1) # 글꼴 속성 1 적용
plt.xlabel("Average Pulse", fontdict = font2) # 글꼴 속성 2 적용
plt.ylabel("Calorie Burnage", fontdict = font2) # 글꼴 속성 2 적용

plt.plot(x, y)
plt.show()

7-4. 제목 배치

  • loc 매개 변수를 사용하면 title()의 제목을 배치 할 수 있습니다.
  • 사용할 수 있는 설정
    • 'left' : 왼쪽 정렬
    • 'right' : 오른쪽 정렬
    • 'center' : 중앙 정렬
  • 기본값 : 'center'
다음은 loc를 사용하여 정렬을 사용한 예시입니다.
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

plt.title("Sports Watch Data", loc = 'left') # loc를 사용하여 제목 왼쪽 정렬
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")

plt.plot(x, y)
plt.show()

8. Matplotlib Adding Grid Lines

8-1. 플롯에 그리드 선 추가

  • Pyplot을 사용하면 grid()함수를 사용 하여 플롯에 그리드 선을 추가 할 수 있습니다.
다음은 플롯에 그리드 선을 추가한 예시입니다.
import numpy as np
import matplotlib.pyplot as plt

x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

plt.title("Sports Watch Data")
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")

plt.plot(x, y)

plt.grid() # 플롯에 그리드 선 추가

plt.show()

8-2. 표시 할 그리드 선 지정

  • grid()에서 axis매개 변수를 사용하여 grid()표시 할 그리드 선을 지정할 수 있습니다.
  • 사용할 수 있는 속성
    • 'x'
    • 'y'
    • 'both'
  • 기본값 : 'both'
다음은 x축에 대한 그리드 선만 표시한 예시 입니다.
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

plt.title("Sports Watch Data")
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")

plt.plot(x, y)

plt.grid(axis = 'x') # x축에 대한 그리드 선만 표시

plt.show()

8-3. 그리드의 선 속성 설정

  • 다음과 같이 그리드의 선 속성을 설정할 수도 있습니다
    • grid (color = ' color ', linestyle = ' linestyle ', linewidth = number )
다음은 그리드의 선 속성을 설정한 예시입니다.
x = np.array([80, 85, 90, 95, 100, 105, 110, 115, 120, 125])
y = np.array([240, 250, 260, 270, 280, 290, 300, 310, 320, 330])

plt.title("Sports Watch Data")
plt.xlabel("Average Pulse")
plt.ylabel("Calorie Burnage")

plt.plot(x, y)

plt.grid(color = 'red', linestyle = '--', linewidth = 0.5) # 그리드 선 속성 설정

plt.show()

9. Matplotlib Subplots

9-1. 여러 플롯 표시

  • subplots()함수를 사용하면 하나의 그림에 여러 플롯을 그릴 수 있습니다.
  • 레이아웃은 행과 열로 구성되며 첫 번째 및 두 번째 인수로 표시합니다, 세 번째 인수는 현재 플롯의 인덱스를 나타냅니다.
    • plt.subplot(1, 2, 1)
    (the figure has 1 row, 2 columns, and this plot is the first plot.)
    • plt.subplot(1, 2, 2)
    (the figure has 1 row, 2 columns, and this plot is the second plot.)
다음은 2개의 플롯을 그린 예시입니다.
# 1개의 행과 2개의 열로 표시
import matplotlib.pyplot as plt
import numpy as np

#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(1, 2, 1) # 플롯1
plt.plot(x,y)

#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(1, 2, 2) # 플롯 2
plt.plot(x,y)

plt.show()

# 2개의 행과 1개의 열로 표시
#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(2, 1, 1) # 플롯1
plt.plot(x,y)

#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(2, 1, 2) # 플롯 2
plt.plot(x,y)

plt.show()

9-2. 표제

  • title()함수를 사용하여 각 플롯에 제목을 추가 할 수 있습니다.
다음은 각 플롯에 제목을 추가한 예시입니다.
- 1번 플롯 : SALES
- 2번 플롯 : INCOME
#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(1, 2, 1)
plt.plot(x,y)
plt.title("SALES") # 1번 플롯에 제목추가

#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("INCOME") # 2번 플롯에 제목추가

plt.show()

9-3. 슈퍼 타이틀

  • suptitle()함수를 사용하여 전체 그림에 제목을 추가 할 수 있습니다.
다음은 전체 그림에 대한 제목을 추가한 예시입니다.
- 전체 그림에 대한 제목 : MY SHOP
#plot 1:
x = np.array([0, 1, 2, 3])
y = np.array([3, 8, 1, 10])

plt.subplot(1, 2, 1)
plt.plot(x,y)
plt.title("SALES")

#plot 2:
x = np.array([0, 1, 2, 3])
y = np.array([10, 20, 30, 40])

plt.subplot(1, 2, 2)
plt.plot(x,y)
plt.title("INCOME")

plt.suptitle("MY SHOP") # 전체 그림에 대한 제목 추가
plt.show()

10. Matplotlib Scatter

10-1. 산점도 생성

  • Pyplot을 사용하면 scatter()함수를 사용하여 산점도를 그릴 수 있습니다.
  • scatter() : 각 관측 값에 대해 하나의 점을 표시합니다.
    • 길이가 같은 두 개의 배열이 필요합니다.
    • 하나는 x축 값이고 다른 하나는 y축 값입니다.
  다음은 산점도를 구현한 예시입니다.
import matplotlib.pyplot as plt
import numpy as np

x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])

plt.scatter(x, y) # x와 y를 이용하여 산점도 생성
plt.show()

10-2. 같은 그림에 두 개의 산점도 그리기

  • 같은 그림에 여러 종류의 산점도를 표현할 수 있습니다.
같은 그림에 두 개의 플롯을 그립니다.
# 13 scatter - 1
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y)

# 15 scatter - 2
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y)

plt.show()

10-3. Scatter 색상 변경

  • color 인수를 사용하여 각 산점도에 대해 고유 한 색상을 설정할 수 있습니다.
  • 더 짧은 방식으로 c 인수를 사용하여 각 산점도에 대해 고유 한 색상을 설정할 수 있습니다.
다음은 Scatter의 색상을 바꾼 예시입니다.
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
plt.scatter(x, y, color = 'hotpink')  # 색상 변경 : HTML Color Names

x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85])
plt.scatter(x, y, color = '#88c999') # 색상 변경 : 16 진수 색상 값

plt.show()

10-4. 각 점에 색상 지정

  • 각 점에 색상을 지정할 때는 color 인수를 사용할 수 없습니다.
  • c 인수 만 사용할 수 있습니다.
다음은 각 점에 색상을 따로 지정하는 예시입니다.
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])

plt.scatter(x, y, c=colors) # 색상 지정

plt.show()

10-5. ColorMap

  • Matplotlib 모듈에는 여러 가지 사용 가능한 컬러 맵이 있습니다.
  • 컬러 맵은 각 색상의 값이 0에서 100 사이 인 색상 목록과 같습니다.
  • 컬러 맵 cmap 키워드 인수 로 컬러 맵을 지정할 수 있습니다.
  • 'viridis'는 Matplotlib에서 사용할 수있는 내장 컬러 맵 중 하나입니다.
  • 산점도의 각 점에 대해 하나의 값 (0에서 100까지)으로 배열을 만들어야합니다.
다음은 색상 배열을 생성하고 산점도에 컬러 맵을 지정한 예시입니다.
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.show()

  • plt.colorbar()명령문을 포함하여 도면에 컬러 맵을 포함 할 수 있습니다.
다음은 도면에 컬러맵을 표현한 예시입니다.
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])

plt.scatter(x, y, c=colors, cmap='viridis')

plt.colorbar() # 도면에 컬러맵 표시

plt.show()

10-6. 사용 가능한 ColorMaps

  • 내장 된 컬러 맵 중 하나를 선택할 수 있습니다.
Name Name Name
Accent Spectral jet
Blues Wistia magma
BrBG YlGn nipy_spectral
BuGn YlGnBu ocean
BuPu YlOrBr pink
CMRmap YlOrRd plasma
Dark2 afmhot prism
GnBu autumn rainbow
Greens binary seismic
Greys bone spring
OrRd brg summer
Oranges bwr tab10
PRGn cividis tab20
Paired cool tab20b
Pastel1 coolwarm tab20c
Pastel2 copper terrain
PiYG cubehelix twilight
PuBu flag twilight_shifted
PuBuGn gist_earth viridis
PuOr gist_gray winter
PuRd gist_heat Set1
Purples gist_ncar Set2
RdBu gist_rainbow Set3
RdGy gist_stern gray
RdPu gist_yarg hot
RdYlBu gnuplot hsv
RdYlGn gnuplot2 inferno
  - Reverse를 사용하고 싶을 때는 끝에 _r을 붙여주면 됩니다.
    ex) copper_r

10-7. 크기

  • s인수 를 사용하여 점의 크기를 변경할 수 있습니다 .
  • 색상과 마찬가지로 크기 배열의 길이가 x축 및 y축 배열과 동일한 지 확인합니다.
  다음은 s를 이용하여 점의 크기를 변경하는 예시입니다.
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])

plt.scatter(x, y, s=sizes) # 점의 크기를 변경합니다.

plt.show()

10-7. 투명도 (알파)

  • alpha인수를 사용하여 점의 투명도를 조정할 수 있습니다.
  • 색상과 마찬가지로 크기 배열의 길이가 x축 및 y축 배열과 동일한 지 확인합니다.
다음은 alpha를 이용해서 scatter에 투명도를 변경한 예시입니다.
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
sizes = np.array([20,50,100,200,500,1000,60,90,10,300,600,800,75])

plt.scatter(x, y, s=sizes, alpha=0.5) # 투명도를 0.5로 설정

plt.show()

10-8. 색상 크기와 알파 결합

  • 각 scatter에 색상, 크기, 투명도를 변경할 수도 있습니다.
다음은 x- 포인트, y- 포인트, 색상 및 크기에 대해 100 개의 값이있는 임의 배열로 나타낸 예시입니다.
x = np.random.randint(100, size=(100))
y = np.random.randint(100, size=(100))
colors = np.random.randint(100, size=(100)) # 임의의 컬러 100개
sizes = 10 * np.random.randint(100, size=(100)) # 임의의 사이즈 100개

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='nipy_spectral')

plt.colorbar()

plt.show()

11. Matplotlib Bars

11-1. 바 만들기

  • Pyplot을 사용하면 bar()함수를 사용하여 막대 그래프를 그릴 수 있습니다.
다음은 4개의 막대를 그린 예시입니다.
import matplotlib.pyplot as plt
import numpy as np

x = np.array(["A", "B", "C", "D"]) # x축
y = np.array([3, 8, 1, 10]) # y축

plt.bar(x,y) # 바 생성
plt.show()

11-2. 수평 막대

  • 막대를 세로 대신 가로로 표시하려면 barh()함수를 사용하면 됩니다.
다음은 barh()를 사용하여 가로 막대 4개를 만드는 예시입니다.
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.barh(x, y) # 가로 막대로 생성
plt.show()

11-3. 막대 색상

  • bar()및 barh()에 키워드 인수 color를 사용하여 색상을 설정합니다.
  • color는 3가지 방식으로 설정할 수 있습니다.
    1. 일반 색상 참조
      • ex) 'r'
    2. 16 진수 색상 값
      • ex) '#DAA520'
    3. HTML Color Names
      • ex) 'BlueViolet'
다음은 4개의 바에 color로 "BlueViolet"를 준 예시입니다.
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.bar(x, y, color = "BlueViolet") # 바의 색상을 BlueViolet로 설정합니다.
plt.show()

11-4. 막대 폭 설정

  • bar()에 키워드 인수를 취하는 width를 사용하여 폭을 설정합니다.
  • 기본 너비 값은 0.8입니다.
다음은 바에 width를 0.1로 주어 얇은 바를 4개를 만든 예시입니다.
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.bar(x, y, width = 0.1) # 막대의 폭을 변경합니다.
plt.show()

11-5. 가로 막대의 폭 설정

  • barh()에 키워드 인수를 취하는 height를 사용하여 높이를 설정합니다.
  • 기본 값은 0.8입니다.
다음은 바에 height를 0.1로 주어 얇은 바를 4개를 만든 예시입니다.
x = np.array(["A", "B", "C", "D"])
y = np.array([3, 8, 1, 10])

plt.barh(x, y, height = 0.1) # 가로 막대의 폭을 변경합니다.
plt.show()

12. Matplotlib Histograms

  • 히스토그램은 빈도 분포를 보여주는 그래프입니다.
  • 주어진 간격 내 관찰 수를 보여주는 그래프입니다.

12-1. 히스토그램 생성

  • Matplotlib에서는 hist()함수를 사용하여 히스토그램을 만듭니다.
다음은 NumPy를 사용하여 250개의 값이있는 배열을 무작위로 생성합니다. 여기서 값은 170에 집중되고 표준 편차는 10입니다.
이를 이용해서 히스토그램을 만들어본 예시입니다.
import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(170, 10, 250) # 무작위 값 생성, 기준은 170, 표준 편차 10에 250개의 무작위 값을 생성합니다.

plt.hist(x) # 히스토그램을 생성합니다.
plt.show() 

13. Matplotlib Pie Charts

13-1. 파이 차트 생성

  • Pyplot을 사용하면 pie()함수를 사용하여 원형 차트를 그릴 수 있습니다.
  • 참고 : 각 쐐기의 크기는 다음 공식을 사용하여 값을 다른 모든 값과 비교하여 결정됩니다.
  • 모든 값의 합계로 나눈 값 : x/sum(x)
다음은 원형 차트는 배열의 각 값에 대해 하나의 조각 (웨지라고 함)을 그립니다 (이 경우 [35, 25, 25, 15]).
기본적으로 첫 번째 쐐기의 플로팅은 x축에서 시작하여 시계 반대 방향으로 이동합니다.
import matplotlib.pyplot as plt
import numpy as np

y = np.array([35, 25, 25, 15])

plt.pie(y)
plt.show() 

13-2. 라벨

  • label 매개 변수를 사용하여 원형 차트에 레이블을 추가하십시오.
다음은 파이 차트에 레이블을 추가한 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"] # 레이블 이름 생성

plt.pie(y, labels = mylabels) # 레이블 추가
plt.show()

13-3. 시작 각도

  • 언급했듯이 기본 시작 각도는 x축에 있지만 startangle 매개변수를 지정하여 시작 각도를 변경할 수 있습니다.
  • startangle : 매개 변수 각도로 정의
  • 기본 각도 : 0
다음은 startangle을 이용하여 시작 각도를 90도로 변경한 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]

plt.pie(y, labels = mylabels, startangle = 90) # 시작 각도를 90도로 변경
plt.show() 

13-4. Explode

  • Explode : 웨지 중에 하나를 눈에 띄게 바꿉니다.
  • explode 매개 변수를 사용하면 가능합니다.
  • explode 파라미터 지정하고 있지 않은 경우 None을 사용합니다.
  • 각각의 웨지에 대한 하나 개의 값으로 배열해야한다.
  • 각 값은 각 쐐기가 중심에서 얼마나 멀리 표시되는지를 나타냅니다.
다음은 Apples의 웨지를 중앙에서 0.2 당긴 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]
myexplode = [0.2, 0, 0, 0]

plt.pie(y, labels = mylabels, explode = myexplode) # explode
plt.show()

13-5. 그림자

  • shadows 매개 변수 : True를 설정하면 원형 차트에 그림자를 추가할 수 있습니다.
다음은 shadow에 True를 주어 원형 차트에 그림자를 추가한 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]
myexplode = [0.2, 0, 0, 0]

plt.pie(y, labels = mylabels, explode = myexplode, shadow = True) # shadow에 True를 주어 그림자 생성
plt.show() 

13-6. 파이 차트 색상

  • colors : colors 매개 변수를 사용하여 각 웨지의 색상을 설정할 수 있습니다.
  • colors는 3가지 방식으로 설정할 수 있습니다.
    1. 일반 색상 참조
      • ex) 'r'
    2. 16 진수 색상 값
      • ex) '#DAA520'
    3. HTML Color Names
      • ex) 'BlueViolet'
다음은 각 웨지에 배열을 통해서 색상을 준 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]
mycolors = ["black", "hotpink", "b", "#4CAF50"] # 웨지 색생 바열

plt.pie(y, labels = mylabels, colors = mycolors) # 파이 차트에 색상 적용
plt.show() 

13-7. Legend

  • Legend는 각 웨지에 설명을 추가하는 방법입니다.
  • 사용방법 : legend()
다음은 legend()를 사용하여 파이 차트에 설명을 추가한 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"] # 설명 작성

plt.pie(y, labels = mylabels)
plt.legend() # 설명 추가
plt.show() 

13-8. Legend에 헤더 추가

  • legend에 title 매개 변수 추가하면 legend에 title을 추가할 수 있습니다.
다음은 legend에 title을 추가한 예시입니다.
y = np.array([35, 25, 25, 15])
mylabels = ["Apples", "Bananas", "Cherries", "Dates"]

plt.pie(y, labels = mylabels)
plt.legend(title = "Four Fruits:") # legend에 title 추가
plt.show() 

댓글