일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CUT&RUN
- PYTHON
- drug development
- CSS
- CUTandRUN
- ChIPseq
- cellranger
- MACS2
- github
- matplotlib
- 비타민 C
- single cell
- EdgeR
- pandas
- Bioinformatics
- scRNAseq analysis
- ngs
- Git
- single cell rnaseq
- HTML
- drug muggers
- scRNAseq
- Batch effect
- single cell analysis
- python matplotlib
- 싱글셀 분석
- DataFrame
- js
- javascript
- julia
- Today
- Total
바이오 대표
[ matplotlib #6 ] Python matplotlib.pyplot 기본 코드 한번에 정리_6 (Scatter 산점도) 본문
[ matplotlib #6 ] Python matplotlib.pyplot 기본 코드 한번에 정리_6 (Scatter 산점도)
바이오 대표 2022. 7. 5. 17:27
Matplotlib Scatter
정리 1~ 5 에서 python matplotlib.pyplot 의 전반적인 설명과 plotting plt.plot( ), marker, line, label, grid, subplot에 대해서 살펴보았습니다. 이번 글에서는 해당 라이브러리로 그래프의 Scatter 즉 산점도 그래프에 대한 설명합니다.
- scatter plt.scatter( )
- colormap cmap='viridis'
- colormap 보이기 plt.colorbar( )
Scatter Plot 산점도 그래프 그리기
scatter plot은 데이터를 관찰 할 때, 전체적인 분포도를 보기 위하여 각 개체를 점으로 표시하여 나타낸 그래프입니다. 보통 두 개의 변수의 동시분포를 볼 수 있습니다. (두 개 이상도 가능합니다) 두 변수의 상관 관계를 파악 하기위해서도 사용됩니다.
plt.scatter(x, y)
예시)
어느 날, 말의 나이와 스피드를 상관관계를 보기 위하여 말의 나이 (horses' age) 와 말의 스피드 (horses' spped) 의 데이터를 얻었다.
x 좌표 = 말 나이 (age)
y 좌표 = 스피드 (speed)
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,17,12,9,6,14])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86,85])
plt.xlabel("Horses' Age")
plt.ylabel("Horses' Speed")
plt.scatter(x, y)
plt.show()
위의 그래프에서 '말이 나이가 들수록 스피드가 낮아진다' 를 해석할 수 있습니다. 만약 다음 날에 데이터를 더 얻어서 합치고 싶으면 plt.scatter( ) 를 여러개 해주면 된다.
↓
import matplotlib.pyplot as plt
import numpy as np
plt.xlabel("Horses' Age")
plt.ylabel("Horses' Speed")
#day one, the age and speed of 14 horses:
x = np.array([5,7,8,7,2,17,2,9,4,17,12,9,6,14])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86,85])
plt.scatter(x, y)
#day two, the age and speed of 16 horses:
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12,15])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85,90])
plt.scatter(x, y)
plt.show()
* plt.scatter( ) 을 여러개 그릴 때 default 값으로 [1] blue [2] orange 색으로 표현됩니다.
Scatter plot 의 dot (점) 색 변경
1) Scatter 마다 색 변경
간단하게 color 혹은 c 를 이용하면 됩니다.
plt.scatter( x, y, color = 'color code')
* 이때 [1] color 단축어 [2] hex code [3] html color names 로 표기 가능합니다. 자세한 예시는 2022.07.01 - [Python/matplotlib] - [ matplotlib #2 ] Python matplotlib.pyplot 기본 코드 한번에 정리_2 (line) 의 Line color 부분에 나와있습니다.
import matplotlib.pyplot as plt
import numpy as np
plt.xlabel("Horses' Age")
plt.ylabel("Horses' Speed")
#day one, the age and speed of 14 horses:
x = np.array([5,7,8,7,2,17,2,9,4,17,12,9,6,14])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86,85])
plt.scatter(x, y, color = 'hotpink')
#day two, the age and speed of 16 horses:
x = np.array([2,2,8,1,15,8,12,9,7,3,11,4,7,14,12,15])
y = np.array([100,105,84,105,90,99,90,95,94,100,79,112,91,80,85,90])
plt.scatter(x, y, color = '#88c999')
plt.show()
2) 점 마다 색 변경
위와 같이 scatter 마다 색 변경을 할 수 도있지만, 각각의 점에 하나하나 색을 지정해 줄 수도 있습니다.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array(["red","green","blue","yellow","pink","black","orange","purple","beige","brown","gray","cyan","magenta"])
plt.scatter(x, y, c=colors)
plt.show()
3) ColorMap 이용 : 'viridis'
만약 표현 하고 싶은 색이 많은데, 이름을 모른다면, Matplotlib 이 제공하는 'viridis' colormap 을 사용 할 수 있습니다. 다음과 같이 0 에서 100 까지의 범위 안에서 숫자로 색을 선택 할 수 있습니다. 0 은 보라색, 100 은 노란색을 표현합니다. 해당 map 을 사용하고 싶다면 plt.scatter(x, y, c=colors, cmap='viridis') 을 하면 됩니다.
import matplotlib.pyplot as plt
import numpy as np
x = np.array([5,7,8,7,2,17,2,9,4,11,12,9,6])
y = np.array([99,86,87,88,111,86,103,87,94,78,77,85,86])
colors = np.array([0, 10, 20, 30, 40, 45, 50, 55, 60, 70, 80, 90, 100])
plt.scatter(x, y, c=colors, cmap='viridis')
plt.show()
만약 그래프에 colormap을 함께 표현하고 싶다면, plt.show() 전에 plt.colorbar() 을 해주면 됩니다.
...
plt.scatter(x, y, c=colors, cmap='viridis')
plt.colorbar()
plt.show()