파이썬 데이터 시각화 : z=f(x,y), 서피스 플롯, 컨투어 플롯

파이썬 데이터 시각화 : z=f(x,y), 서피스 플롯, 컨투어 플롯

파이썬 데이터 시각화 도구 중 독립변수가 2개일 때의 함수 값, z=f(x,y)를 시각화 할 수 있는 방법을 알아보고 있습니다. 지난 포스팅에서 3차원 서피스 플롯과 함수값까지 쉽게 읽을 수 있는 컨투어 플롯까지 알아보았습니다. 이번엔 이 둘을 함께 그리는 파이썬 코드를 작성해보겠습니다.


글의 순서

서피스 플롯 vs, 컨투어 플롯
파이썬 데이터 시각화 : 서피스 플롯 + 컨투어 플롯


서피스 플롯 vs, 컨투어 플롯

지난 포스팅에서 3차원 데이터 z=f(x,y)를 가시화 할 수 있는 방법인 서피스 플롯과 컨투어 플롯을 그리는 방법을 알아보았습니다. 서피스 플롯(surface plot)을 통해 데이터를 한 눈에 파악하고, 서피스 플롯으로는 알아내기 힘든 데이터를 컨투어 플롯으로 확인할 수 있었습니다. 컨투어 플롯은 파이썬 matplotlib 패키지로 그릴 수 있는 데이터 가시화 도구로 3차원 데이터를 2차원 평면에 나타내는 방식 중 하나입니다.

참고로, 공학에서 널리 사용되고 있는 카펫 플롯(carpet plot)도 3차원 데이터를 2차원 평면에 나타내는 방식 중 하나인데, 파이썬 matplotlib 패키지로는 그릴 수 없습니다.



파이썬 데이터 시각화 : 서피스 플롯 + 컨투어 플롯

이번 포스팅에서는 하나의 그림(Figure)에 서피스 플롯과 컨투어 플롯을 함께 그려서 데이터를 좀 더 쉽게 파악할 수 있도록 해보겠습니다. 실습코도01에 이 두 개의 그래프를 한꺼번에 그리는 방법을 나타내었습니다.

실습코도01은 왼쪽에 서피스 플롯을, 오른쪽에는 컨투어 플롯을 그려줍니다. 각 플롯에는 축 레이블과 제목이 있으며, 컬러바(color bar)도 포함되어 있습니다. 실습코드01에서 기억해 둘만한 것들을 아래에 정리하였습니다.

line 25~27
▶plt.subplots(1, 2) : 1행 2열의 서브플롯을 생성합니다. 이는 두 개의 그래프를 나란히 표시한다는 뜻입니다.
▶figsize=(16, 6)는 전체 그림(Figure)의 크기를 가로 16인치, 세로 6인치로 설정합니다.
▶subplot_kw={‘projection’: ‘3d’}는 첫 번째 서브플롯(서피스 플롯)을 3D로 설정합니다.
▶gridspec_kw={‘width_ratios’: [1, 1]}는 두 서브플롯의 너비 비율을 1:1로 설정합니다.

line 30
▶첫 번째 서브플롯(axs[0])에 서피스 플롯을 그립니다. x, y, z는 각각의 축에 해당하는 데이터입니다.
▶cmap=’viridis’는 컬러맵을 ‘viridis’로 설정합니다.

line 31
▶ 서피스 플롯에 대한 컬러 바를 추가합니다.
▶ shrink는 컬러 바의 크기를 줄이고, aspect는 컬러 바의 종횡비를 설정합니다.

line 40 : axs[1].remove()로 기존에 생성된 두 번째 서브플롯을 제거합니다. 이는 3D 설정을 2D로 변경하기 위함입니다.

line 41 : axs[1] = fig.add_subplot(122)로 새로운 2D 서브플롯을 생성하여 두 번째 위치에 배치합니다.

line 42 : 두 번째 서브플롯(axs[1])에 컨투어 플롯을 그립니다. 여기서도 cmap=’viridis’를 사용합니다.

line 43 : 컨투어 플롯에 컬러 바를 추가합니다.

line 50 plt.tight_layout()로 서브플롯들이 겹치지 않도록 레이아웃을 조정합니다.

실습코드01을 실행시키면, 데이터프레임 변수 data가 아래처럼 출력됩니다. 그 후 서피스+컨투어 플롯이 C:/_python/pandas/visual/surface/에 그림파일로 저장되며, Figure 1이라는 창이 뜨면서 아래처럼 눈으로 확인할 수도 있습니다.

파이썬 데이터 시각화 : 서피스 플롯 + 컨투어 플롯


마치며 …

이번 포스팅에서는 파이썬으로 서피스 플롯과 컨투어 플롯을 함께 그리는 방법을 알아보았습니다. 서피스 플롯이나 컨투어 플롯은 파이썬 데이터 시각화 도구 중 독립변수가 2개일 때의 함수 값, z=f(x,y)를 시각화 할 수 있는 방법입니다. 이렇게 두 개의 그래프를 하나의 그림(Figure)로 나타내면, 함수 형태와 함께 함수 값까지 한꺼번에 파악할 수 있습니다. 이 포스팅이 파이썬 데이터 분석에 유용하게 활용되길 바랍니다.

 

 

함께 참고하면 좋은 글 :
머신러닝 수학 : 인공지능은 함수
파이썬 데이터 시각화 : 3차원 서피스 플롯(surface plot)
파이썬 데이터 시각화 : 컨투어 플롯(contour plot, 등고선 플롯)
파이썬 데이터 시각화 : 막대 그래프 작성 2가지 방법(maplotlib.pyplot 활용)
시계열 데이터 가시화 (4) 2개 y축 그래프로 코인 가격 비교
파이썬 판다스 데이터 분석 : pivot, 엑셀 입력, 출력


참고자료

matplotlib, 3D plotting

Leave a Comment