728x90
일반적인 선 그래프에 비해서 평균값과 혹은 선그래프사이의 차이를 채워줌으로써 더욱 전문적인 그래프로 보이게 할 수 있습니다.
matplotlib 에서는 fill_between()을 사용하여 공간을 채울 수 있습니다.
1. 일반적 선그래프
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
from matplotlib import pyplot as plt
등급 = [0,1,2,3,4,5,6]
맑음_기록 = [103.54,98.87,96.75,92.47,86.85,82.17,75.66]
비_기록 = [114.72,100.10,91.60,90.12,83.63,88.26,80.71]
기록_평균 = 84.78
plt.plot(등급,맑음_기록,label = '맑음_기록',linestyle="--")
plt.plot(등급,비_기록,label = '비_기록')
plt.legend()
plt.title('2019 날씨별 경주기록')
plt.xlabel('등급')
plt.ylabel('기록')
plt.tight_layout()
plt.show()
|
cs |
2. 평균값과의 차이를 나타내는 그래프
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
from matplotlib import pyplot as plt
등급 = [0,1,2,3,4,5,6]
맑음_기록 = [103.54,98.87,96.75,92.47,86.85,82.17,75.66]
비_기록 = [114.72,100.10,91.60,90.12,83.63,88.26,80.71]
기록_평균 = 84.78
plt.plot(등급,맑음_기록,label = '맑음_기록',linestyle="--")
plt.plot(등급,비_기록,label = '비_기록')
plt.fill_between(등급,비_기록,기록_평균,interpolate=True, alpha = 0.25)
plt.legend()
plt.title('2019 날씨별 경주기록')
plt.xlabel('등급')
plt.ylabel('기록')
plt.tight_layout()
plt.show()
|
cs |
3. 선 그래프들 사이의 공간을 채움
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
from matplotlib import pyplot as plt
등급 = [0,1,2,3,4,5,6]
맑음_기록 = [103.54,98.87,96.75,92.47,86.85,82.17,75.66]
비_기록 = [114.72,100.10,91.60,90.12,83.63,88.26,80.71]
기록_평균 = 84.78
#plt.plot(등급,맑음_기록)
plt.plot(등급,맑음_기록,label = '맑음_기록',linestyle="--")
#plt.plot(등급,비_기록)
plt.plot(등급,비_기록,label = '비_기록')
plt.fill_between(등급,비_기록,맑음_기록,interpolate=True, alpha = 0.25)
plt.legend()
plt.title('2019 날씨별 경주기록')
plt.xlabel('등급')
plt.ylabel('기록')
plt.tight_layout()
plt.show()
|
cs |
*데이터의 크기가 더 커야 기준선 위 아래의 색을 구분할 수 있습니다.
그래서 부득이하게 다른 그래프로 예시를 보여 드립니다.
4.평균값 위 아래 구분
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
|
import pandas as pd
from matplotlib import pyplot as plt
data = pd.read_csv('data2.csv')
ages = data['Age']
dev_salaries = data['All_Devs']
py_salaries = data['Python']
js_salaries = data['JavaScript']
plt.plot(ages, dev_salaries, color = '#444444',linestyle="--",label='All Devs')
plt.plot(ages, py_salaries, label='Python')
overall_median = 57287
plt.fill_between(ages,py_salaries,overall_median,where=(py_salaries > overall_median)
,interpolate=True, alpha = 0.25)
plt.fill_between(ages,py_salaries,overall_median,where=(py_salaries <= overall_median)
,interpolate=True,color = 'red', alpha = 0.25)
plt.title('Median salary by age')
plt.xlabel('ages')
plt.ylabel('Median salary')
plt.tight_layout()
plt.show()
|
cs |
5. 선그래프 사이의 차이 채움
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
|
import pandas as pd
from matplotlib import pyplot as plt
data = pd.read_csv('data2.csv')
ages = data['Age']
dev_salaries = data['All_Devs']
py_salaries = data['Python']
js_salaries = data['JavaScript']
plt.plot(ages, dev_salaries, color = '#444444',linestyle="--",label='All Devs')
plt.plot(ages, py_salaries, label='Python')
overall_median = 57287
plt.fill_between(ages,py_salaries,dev_salaries,where=(py_salaries > dev_salaries)
,interpolate=True, alpha = 0.25, label = 'Above Avg')
plt.fill_between(ages,py_salaries,dev_salaries,where=(py_salaries <= dev_salaries)
,interpolate=True, alpha = 0.25, label = 'Below Avg')
plt.title('Median salary by age')
plt.xlabel('ages')
plt.ylabel('Median salary')
plt.tight_layout()
plt.show()
|
cs |
728x90
'데이터분석 > Python matplotlib' 카테고리의 다른 글
<matplotlib> 실시간 데이터 반영 그래프 (4) | 2021.08.29 |
---|---|
<Matplotlib> 산점도 그리기 (0) | 2021.08.28 |
<Python Matplotlib> Stack Plot 누적 그래프 그리기 (0) | 2021.08.20 |
<Python matplotlib> Pie chart 만들기 (0) | 2021.08.17 |
<Python matplotlib> matplotlib 한글 폰트 깨짐 수정[진짜 되는 수정] 따라만 하세요 (0) | 2021.08.16 |