콘다 환경 설치
conda env list
conda create -n (프로젝트 명)
conda activate (프로젝트 명)
아나콘다를 통한 환경설치
맥의 경우 terminal, 윈도우는 cmd를 열어 아래와 같은 명령어를 입력해준다.
conda install -c anaconda numpy
conda install -c anaconda scikit-learn
conda install -c anaconda pandas
conda install -c anaconda matplotlib
파이참에서 가상환경 설치
https://certlys82.tistory.com/entry/파이썬-코딩을-위한-파이참-아나콘다-설치하기맥북m1
이후 import를 통한 라이브러리를 불러오기 위해 이 과정을 거쳐야한다.
matplotlib 활용 ax 생성
import matplotlib.pyplot as plt
import numpy as np
#띄어쓰기에 유의. matplotlib에서 사용하는 '문법'
#fig 선언을 통해 fig라는 figure 생성
fig = plt.figure(figsize=(7, 7), facecolor='linen')
ax = fig.add_subplot()
#선그래프 그리기
ax.plot([2,3,1])
#산점도 그래프 그리기
ax.scatter([2,3,1],[2,3,4])
#그래프의 소제목 - fontsize(크기) / fontfamily(글꼴)을 선택할 수 있음
fig.suptitle("Title of a Figure", fontsize=30, fontfamily='monospace')
plt.show()
fig와 ax를 선언해 subplot생성한다. 산점도 그래프를 그려 삽입한다.
결과는 위와 같다.
set / get을 타이틀 삽입
get(getter): 셋팅된 세터를 가져와주는 역할
figsize = (7,7)
fig, ax = plt.subplots(figsize=figsize)
ax.set_title("Title of a Ax", fontsize=30, fontfamily='monospace')
plt.show()
set_title을 통해 ax의 타이틀을 붙일 수 있다. 뿐만 아니라 fontsize와 fontfamily도 설정해줄 수 있다.
해당 코드를 실행시켰을 때의 결과값. 그래프가 잘 그려진 것을 알 수 있다.
X label & Y label 붙이기
fig, ax = plt.subplots(figsize=figsize)
ax.set_xlabel("X label", fontsize=20)
ax.set_ylabel("Y label", fontsize=20)
이번엔 x와 y축에 대해 label을 선언해보자. x축과 y축에 대한 설명을
figsize는 subplots을 선언해줄 때 기본적으로 선언해주는 값으로, subplot을 작성할 때 인지를 하고 있어야 한다.
오브젝트: data + 기능을 추가한 것이라 생각하면 편하다.
클래스: 새로운 오브젝트 타입으로 만든다
X와 Y축에 labeling 하기
<X label & Y label 붙이기>
figsize = (7, 7)
fig, ax = plt.subplots(figsize=figsize)
fig.suptitle("Title of a Figure", fontsize=30, color='darkblue', alpha=0.9)
ax.set_xlabel("X label", color='darkblue', alpha=0.7)
ax.set_ylabel("Y label", color='darkblue', alpha=0.7)
#tight_layout()
fig.tight_layout()
set_xlabel / ylabel을 통해 컬러값을 정해줄 수 있다. 뿐만 아니라 특정 메소드의 형태를 알아보려면, matplotlib에서 찾으며 인자를 어디에 넣을지 선택할 수 있다.
한 ax에 여러 개의 그래프 그리기
#<ax.twinx>
fig = plt.figure(figsize=(10, 10))
ax1 = fig.add_subplot()
ax2 = ax1.twinx()
#x & y축의 범위 설정
ax1.set_xlim([0, 100])
ax1.set_ylim([0, 100])
ax2.set_ylim([0, 0.01])
#축의 범위 설정
ax1.set_title("Twinx Graph", fontsize=30)
ax1.set_ylabel("Data1", fontsize=30)
ax2.set_ylabel("Data2", fontsize=30)
#figure의 크기가 변치 않는 여백을 만들어줌
fig.tight_layout()
twinx를 통해 x축을 두 개로 만들어줄 수 있다. 뿐만 아니라 xlim이라는 함수를 통해 범위를 지정해주어 그래프의 범위를 설정할 수 있다. 시각화를 하는 과정에서 이 과정은 필수적이기 때문에 인지를 할 필요가 있음.
tick을 통한 그래프 단위 나누기
# tick: 그래프 나누어진 범위
ax.tick_params(labelsize=20,
length=10,
width=3,
bottom=False, labelbottom=False,
left=False, labelleft=False,
top=True, labeltop=True,
right=True, labelright=True)
그래프의 쪼개진 걸 tick이라 하는데, 이 tick의 파라미터를 수정해 시각적 변형을 일으킬 수 있다.
위와 같이 코드를 입력해 tick의 파라미터를 수정할 수 있으며, 아래처럼 rotation 인자를 입력해 파라미터를 회전할 수 있다.
ax.tick_params(axis='x',
labelsize=20,
length=10,
width=3,
rotation=30)
ax.tick_params(axis='y',
labelsize=20,
length=10,
width=3,
rotation=30)
위에 있던 코드를 실행했을 때의 결과물.
그래프에 텍스트 삽입하기
figsize = (7,7)
fig, ax = plt.subplots(figsize=figsize)
ax.set_xlim([-1,1])
ax.set_ylim([-1,1])
ax.grid()
ax.tick_parmas(axis='both',labelsize=15)
ax.text(x=0, y=0, s="Hello", fontsize=30)
xlim / ylim을 통해 ax의 범위를 설정할 수 있으며, tick params를 통해 tick을 설정해줄 수도 있다.
다른 좌표에 텍스트를 넣을 순 없을까? 방법이 있다. x/y 좌표를 설정하면 몇 개든 추가할 수 있다. 뿐만 아니라 fontsize와 s을 정해 원하는 내용을 적어 넣을 수도 있다.
텍스트 정렬을 하기 위해서는 어떻게 해야할까?
#텍스트 정렬
ax.text(x=0, y=0,
va='center', ha='left',
s='Hello',
fontsize=30)
ax.text(x=0, y=0,
va='center', ha='center',
s='Hello',
fontsize=30)
ax.text(x=0, y=0,
va='center', ha='right',
s='Hello',
fontsize=30)fig.tight_layout()
plt.show()
정렬을 하기 위해서는 아래의 두 정의와 범위를 알아야 한다. va / ha라는 생소한 축약어지만, 뜻을 살펴보면 이해하기 쉽다.
va(vertical alignment): y축에서의 위치 → center / top / bottom / baseline
ha(horizontal alignment): x축에서의 위치 → center / right / left
텍스트 기준으로 점을 찍어 이를 좌표로 활용한다 생각하면 쉽다.
이렇게 va / ha를 통해 같은 위치에 있더라도 정렬 방식에 따라 달라질 수 있다는 사실을 기억하면 된다.
matplotlib 라이브러리 컬러
matplotlib의 경우 tab20을 사용한다
enumerate함수의 사용
#named colors: enumerate함수의 사용
color_list = ['b', 'g', 'r', 'c', 'm', 'y']
fig, ax = plt.subplots(figsize=(5, 10))
ax.set_xlim([-1,1])
ax.set_ylim([-1,len(color_list)])
#enumerate: 원소와 인덱스 동시에 접근할 수 있는 함수
for c_idx, c in enumerate(color_list):
ax.text(0, c_idx,
"color="+c,
fontsize=20,
ha='center',
color=c)
enumerate → 리스트와 인덱스에 동시에 접근할 수 있도록 하는 함수
c_idx 인덱스의 인자인 'b', 'g', 'r', 'c', 'm', 'y'를 enumerate를 통해 하나씩 호출한다. 때문에
len(color_list)는 6가 될 것이고, (0,0) - (0,5) 사이에 하나씩 해당 인자들이 출력될 것이다.