학회&동아리/FORZA

[FORZA STUDY] 나도코딩 - 데이터분석 및 시각화 week4

최연재 2023. 5. 14. 22:32

📍기본 설정

import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'Malgun Gothic' # Windows, Mac일 때는 AppleGothic
#matplotlib.rcParams['font.family'] = 'HYGungSo-Bold'# 궁서체
matplotlib.rcParams['font.size'] = 15 # 폰트 크기
matplotlib.rcParams['axes.unicode_minus'] = False # 한글 폰트 사용 시 마이너스 글자가 깨지는 것방지

x = [1, 2, 3]
y = [2, 4, 8]

1. 범례

1.1 범례를 포함해서 그래프 출력하기

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

1.2 범례의 위치 지정

📌 아래 링크에서 자세한 내용 확인 가능

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html

 

matplotlib.pyplot.legend — Matplotlib 3.7.1 documentation

Place a legend on the Axes. The call signatures correspond to the following different ways to use this method: 1. Automatic detection of elements to be shown in the legend The elements to be added to the legend are automatically determined, when you do not

matplotlib.org

(1) 키워드 사용

plt.plot(x, y, label='무슨 데이터')
plt.legend(loc='upper right') #오른쪽 위

location string location code
best (적당히 비어 있는 곳에 위치) 0
upper right 1
upper left 2
lower left 3
lower right 4
right 5
center left 6
center right 7
lower center 8
upper center 9
center 10
(2) 사용자가 위치 지정
plt.plot(x, y, label='범례')
plt.legend(loc=(0.5, 0.5)) #x축, y축 (0~1 사이) 세부적 위치 설정

2. 스타일

2.1 그래프 선의 두께 설정하기

plt.plot(x, y, linewidth=10) #선 두께

2.2 마커 (marker)

- 마커의 종류 선택 가능 : marker='원하는모양'

📌 아래 링크에서 마커의 종류와 표현 방법을 확인 가능

https://matplotlib.org/stable/api/markers_api.html

 

matplotlib.markers — Matplotlib 3.7.1 documentation

matplotlib.markers Functions to handle markers; used by the marker functionality of plot, scatter, and errorbar. All possible markers are defined here: marker symbol description "." point "," pixel "o" circle "v" triangle_down "^" triangle_up "<" triangle_

matplotlib.org

plt.plot(x, y, marker='o') #점을 찍어서 제시된 데이터 값 표시

plt.plot(x, y, marker='o', linestyle='None') #점을 찍어서 제시된 데이터 값 표시, 선 긋지 x

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

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

- 마커의 크기 설정 가능 : markersize = 크기

- 마커의 테두리 색 설정 가능 : markeredgecolor = '색깔'

plt.plot(x, y, marker='o', markersize=20, markeredgecolor='red')

- 마커의 내부 색 설정 가능 : markerfacecolor = '색깔'

plt.plot(x, y, marker='o', markersize=20, markeredgecolor='red', markerfacecolor='yellow')

2.3 선 스타일

- 선의 모양 : linestyle : '원하는모양'

📌아래 링크에서 선의 종류와 표현 방식 확인 가능

https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html

 

Linestyles — Matplotlib 3.7.1 documentation

Note Click here to download the full example code Linestyles Simple linestyles can be defined using the strings "solid", "dotted", "dashed" or "dashdot". More refined control can be achieved by providing a dash tuple (offset, (on_off_seq)). For example, (0

matplotlib.org

https://matplotlib.org/2.1.2/api/_as_gen/matplotlib.pyplot.plot.html

 

matplotlib.pyplot.plot — Matplotlib 2.1.2 documentation

Plot lines and/or markers to the Axes. args is a variable length argument, allowing for multiple x, y pairs with an optional format string. For example, each of the following is legal: If x and/or y is 2-dimensional, then the corresponding columns will be

matplotlib.org

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

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

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

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

- 선의 색깔 설정 : color = '색깔'

📌아래 링크에서 표현 가능한 색과 표현법 확인 가능

https://matplotlib.org/stable/gallery/color/named_colors.html

 

List of named colors — Matplotlib 3.7.1 documentation

Note Click here to download the full example code List of named colors This plots a list of the named colors supported in matplotlib. For more information on colors in matplotlib see Helper Function for Plotting First we define a helper function for making

matplotlib.org

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

plt.plot(x, y,color='#ff0000')

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

2.4 포맷 : 이전까지 했던 내용을 하나로 묶어서 작성 가능

plt.plot(x, y, 'ro--') #color, marker, linestyle 순으로 작성

plt.plot(x, y, 'bv:')

plt.plot(x, y, 'go') #linestyle은 언급 안 하면 None
# plt.plot(x, y, color='g', marker='o', linestyle='None')와 같은 결과

2.5 축약어

📌아래 링크의 표에서 확인 가능

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.plot.html

 

matplotlib.pyplot.plot — Matplotlib 3.7.1 documentation

An object with labelled data. If given, provide the label names to plot in x and y. Note Technically there's a slight ambiguity in calls where the second label is a valid fmt. plot('n', 'o', data=obj) could be plt(x, y) or plt(y, fmt). In such cases, the f

matplotlib.org

  • mfc : markerfacecolor
  • ms : markersize
  • mec : markeredgecolor
  • ls : linestyle

2.6 그래프의 투명도 

- alpha = 숫자 

2.7 그래프 자체의 크기

plt.figure(figsize=(10, 5))
plt.plot(x,y)

plt.figure(figsize=(5,10))
plt.plot(x,y)

plt.figure(figsize=(10,5), dpi=50) #dots forinch 확대 ; 해상도 정의
plt.plot(x,y)

2.8 배경색

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

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


3. 파일 저장

- plt.savefig('파일명')

plt.plot(x, y)
plt.savefig('graph.png')

plt.plot(x, y)
plt.savefig('graph1.png', dpi=100) #해상도가 이전보다 더 큰 파일로 저장

plt.figure(dpi=200)
plt.plot(x,y)
plt.savefig('graph2.png') #dpi가 200인 파일

plt.figure(dpi=200)
plt.plot(x,y)
plt.savefig('graph3.png', dpi=100) #dpi가 100인 파일

사진처럼 png파일들이 생긴 것들을 확인 가능!


4. 텍스트

- 반복문을 사용해서 각각의 요소에 대해 텍스트를 작성하는 것이 가능하다.

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

for idx, txt in enumerate(y):
    plt.text(x[idx], y[idx]+0.3, txt) #데이터 기준 0.3 위에 작성됨

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

for idx, txt in enumerate(y):
    plt.text(x[idx], y[idx]+0.3, txt, ha='center', color='blue') #수평정렬


5. 여러 데이터

- 하나의 그래프 안에 여러 데이터의 내용을 표현하기

days = [1, 2, 3] #1일, 2일, 3일
az= [2, 4, 8] #(단위 : 만명) 1일~3일까지의 아스트라제네카 접종인구
pfizer = [5, 1, 3] #화이자
moderna = [1,2,5] #모더나

plt.plot(days, az)
plt.plot(days, pfizer)
plt.plot(days, moderna)

- 각각의 그래프에 다른 속성을 주는 것이 가능하다.

plt.plot(days, az, label='az')
plt.plot(days, pfizer, label='pfizer', marker='o', ls = '--')
plt.plot(days, moderna, label='moderna', marker='s', linestyle='-.')

plt.legend()

- 범례를 열의 개수에 따라 늘여서 보여줄 수 있다.

plt.plot(days, az, label='az')
plt.plot(days, pfizer, label='pfizer', marker='o', ls = '--')
plt.plot(days, moderna, label='moderna', marker='s', linestyle='-.')

plt.legend(ncol=3) #col 개수에 걸쳐 범례 보여줌


6. 막대 그래프 (기본)

labels = ['강백호', '서태웅', '정대만'] #이름
values = [190, 187, 184] #키

plt.bar(labels, values)

- 속성으로 색깔, 투명도 등을 설정할 수 있다. 

- 색깔의 경우 리스트를 이용해서 각각의 요소에 다른 색을 주는 것이 가능하다.

- y축 값의 범위 설정이 가능하다.

plt.bar(labels, values)
plt.ylim(175, 195) #y축의 범위

- 막대의 두께를 설정할 수 있다.

plt.bar(labels, values,width=0.5) #두께 얇아짐

- x축과 y축의 내용을 기울일 수 있다.

- x축 내용을 지정할 수 있다.


2주 뒤면 완강입니다!