위 데이터프레임의 mpg 컬럼과 horsepower 컬럼의 관계를 살펴보자
scatter 이용
[하나의 그래프]
1. plt
plt.scatter() | plt.plot.scatter() | plt.plot(kind='scatter') |
가능 - xlabel, ylabel 등은 수동으로 추가해야 함 - data 옵션 이용 여부에 따라 컬럼 연산 가능/불가능 - 사이즈는 plt.figure(figsize=(N, N))으로 조정 |
불가능 | 불가능 |
data 옵션 없이
data 옵션 이용
크기(figsize) 조정
2. 데이터프레임(시리즈).plot
df.plot.scatter / df.plot(kind='scatter') 모두 가능 |
- plot 메서드 안에서 figsize 조절 가능 - label이 자동으로 생겨남 |
크기(figsize) 조정
한 줄로 그릴 수 있고, 크기도 조정할 수 있다.
3. ax = plt.subplots()
ax=plt.scatter(x=df['mpg'], y=df['horsepower']) | 잘 그려짐 + 컬럼에 연산 가능 |
ax=plt.scatter(x='mpg', y='horsepower', data=df) | 잘 그려짐 (컬럼에 연산 불가) |
ax=df.plot.scatter(x='mpg', y='horsepower') | ax 객체에 그려지지 않고 새로운 기본 틀에 그려짐 |
[하나의 그래프 결론]
단순히 컬럼만 (추가적 연산 등 없이)이용하고 살펴보기만 할 거라면
2번 방법(데이터프레임.plot)이 편해보인다.
[하나의 그래프 + 컬럼에 연산 적용]
horsepower 컬럼에 log10을 씌운다.
1. plt.scatter()
data 옵션 이용하지 않음
위 방법은 어찌됐든 df을 통째로 불러와서 하는 작업이므로
log10을 씌워도
에러 없이 원하는 결과를 그려낸다.
당연하게도 data 옵션을 이용하면 에러가 발생한다.
2. 데이터프레임(시리즈).plot
이 방법 또한 불가능하다.
[하나의 그래프 + 컬럼에 연산 적용 결론]
컬럼에 어떤 작업을 한다면 data 옵션 없이 plt를 이용한 1번 방법을 이용해야 한다.
[두개 이상의 그래프(add_subplot)]
fig = plt.figure()
ax = fig.add_subplot()
1. ax
ax.scatter() | ax.plot.scatter() | ax.scatter(kind='scatter') |
가능 - xlabel, ylabel 등은 수동으로 추가 - data 옵션 이용 여부에 따라 컬럼 연산 가능/불가능 - plt.figure(figsize=(N, N))로 크기 조정 |
불가능 | 불가능 |
data 옵션 없이
ax객체에는 바로 그래프의 종류를 명시해서 그려야한다.
ax.plot.scatter나 ax.plot(kind='scatter')는 에러가 발생한다.
우측의 그래프는 horsepower컬럼에 log10을 씌웠는데 문제 없이 그려졌다.
x, y축의 label은 따로 명시해줘야 한다.
data 옵션 이용
data 옵션을 이용해도 ax.scatter를 이용해서 위치 할당하며 그릴 순 있으나
이 역시 마찬가지로 컬럼에 연산할 수 없다.
2. df.plot
ax객체를 이용하지 않고 바로 df.plot을 이용하므로
위치 할당이 불가능 하다.
또한
컬럼에 연산을 적용해도 에러가 발생한다.
[두개 이상의 그래프(add_subplot) 결론]
2번 방법은 애초에 위치 할당도, 컬럼에 연산도 불가능 하다.
컬럼에 연산이 필요한지 여부에 따라 1번 방법을 적재적소에 사용하면 된다.
plt.___ | 바로 그래프의 종류 (scatter, hist, ..., pie) 명시 |
fig = plt.figure() ax = fig.add_subplot(1, 1, 1) ax.___ |
바로 그래프의 종류 (scatter, hist, ..., pie) 명시 |
다음 포스팅에선 subplots()를 구분해보자
'시각화 > Matplotlib' 카테고리의 다른 글
Matplotlib - x축 눈금 회전 안될 때 : ConversionError (0) | 2020.08.07 |
---|---|
Matplotlib - 그래프 그릴 때 헷갈리는 부분 정리(2) (0) | 2020.07.28 |
Matplotlib - 박스 플롯(박스 그래프) : boxplot (0) | 2020.07.25 |
Matplotlib - 파이 차트 : pie (0) | 2020.07.25 |
Matplotlib - 산점도 : scatter (2) | 2020.07.25 |