바이오 대표

[ matplotlib #10 ] Python matplotlib.pyplot 기본 코드 한번에 정리_10 (Heatmap 히트맵) 본문

Python/matplotlib

[ matplotlib #10 ] Python matplotlib.pyplot 기본 코드 한번에 정리_10 (Heatmap 히트맵)

바이오 대표 2022. 7. 10. 23:06

 

Matplotlib Heatmap 히트맵

정리 1~ 8 에서 python matplotlib.pyplot 의 전반적인 설명과 plotting plt.plot( ), marker, line, label, grid, subplot, scatter, bars plot, pie chart 에 대해서 살펴보았습니다. 이번 글에서는 해당 라이브러리로 Heatmap 히트맵 에 대한 설명합니다. 

  • histogram  plt.matshow( )  or plt.imshow( )
  • color bar plt.colorbar( )
  • color limit plt.clim( , ) 
  • colar map plt.get_camp('')

 

Heatmap 히트맵 그리기

Heatmap 히트맵은 숫자 데이터를 분포를 색상을 이용해서 시각화 한 것이다. 나는 바이오인포매티션으로 gene expression level을 시각화 할때, 많이 사용합니다. 

plt.matshow(2D array or list) 혹은 plt.imshow(array)

 

예시) 

import matplotlib.pyplot as plt
import numpy as np

arr = np.random.standard_normal((20, 25))

plt.matshow(arr)
plt.show()

...
plt.imshow()
...

 

 

Color bar 나타내기

단순이 heatmap만 나타내면 어떤 색이 많은 양을 표현하고 어떤 색이 적은 양을 표현하는 것이 헷갈리기에 colormap을 표시해주는 것도 좋습니다.

plt.colorbar()을 이용하면 됩니다. 

import matplotlib.pyplot as plt
import numpy as np

arr = np.random.standard_normal((20, 25))

plt.matshow(arr)
plt.colorbar()

plt.show()

 

해당 colorbar 는 argument shrink (위, 아래), 그리고 aspect (Aspect, 너비) 조정이 가능합니다. 

...
plt.colorbar(shrink=0.8, aspect=20)
...

 

색상 범위도 조절 할 수 있습니다. plt.clim( , ) color limit 을 이용할 수 있습니다. default 값은 (-0.3, 0.3) 입니다. 

import matplotlib.pyplot as plt
import numpy as np

arr = np.random.standard_normal((20, 25))

plt.matshow(arr)
plt.colorbar(shrink=0.8, aspect=20)
plt.clim(-2.0, 1.0)

plt.show()

 

Color map 지정하기 

matplotlib 라이브러리는 이미 만들어져 있는 color maps 들이 있습니다. 우리는 이를 활용하여 원하는 색을 이용하여 히트맵을 그릴 수 있습니다. color maps 는 크게 다음과 같이 나눌 수 있습니다. plt.get_cmap('color map') 을 이용해 불러오고 cmap 을 이용해 사용할 수 있습니다. 

  • sequential (연속적인 색)
  • divererging (두가지의 카테고리가 있는 경우 - gene expression level 에서는 0 이상(증가), 0 이하(감소) 표현할 때 많이 사용)
  • Cyclic (시작과 끝이 같은 색) 
  • Qualitative (양별로 다른 색 사용)

* color maps 에서 더 자세히 알아 볼 수 있습니다. 

 

 

예시) 

import matplotlib.pyplot as plt
import numpy as np

arr = np.random.standard_normal((20, 25))
# cmap = plt.get_cmap('PiYG')
# cmap = plt.get_cmap('Pastel1')
# cmap = plt.get_cmap('Greys')
cmap = plt.get_cmap('bwr')

plt.matshow(arr, cmap=cmap)
plt.colorbar(shrink=0.8, aspect=20)
plt.clim(-2.0, 1.0)

plt.show()