반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- dataframe
- Google Spreadsheet
- google apps script
- Redshift
- c#
- Github
- 파이썬
- array
- PySpark
- matplotlib
- math
- numpy
- Google Excel
- Apache
- list
- django
- Kotlin
- Tkinter
- PostgreSQL
- Excel
- SQL
- hive
- Mac
- Java
- GIT
- gas
- PANDAS
- string
- Python
Archives
- Today
- Total
달나라 노트
Python matplotlib : stacked bar (bar method로 stacked bar graph 그리기) 본문
Python/Python matplotlib
Python matplotlib : stacked bar (bar method로 stacked bar graph 그리기)
CosmosProject 2024. 4. 10. 02:00728x90
반응형
matplotlib의 bar method를 가지고 stacked bar graph를 그릴 수 있습니다.
(bar method = https://cosmosproject.tistory.com/427)
import matplotlib.pyplot as plt
import numpy as np
arr_bottom = np.array([0, 0, 0, 0])
list_x = ['2021', '2022', '2023', '2024']
arr_row_1 = np.array([34, 86, 94, 20])
arr_row_2 = np.array([59, 4, 98, 93])
plt.bar(list_x, arr_row_1,
bottom=arr_bottom,
width=0.5,
color='pink')
arr_bottom = arr_bottom + arr_row_1
print(arr_bottom)
plt.bar(list_x, arr_row_2,
bottom=arr_bottom, # bottom 옵션을 통해 bar graph의 시작 지점 설정
width=0.5,
color='lightblue')
plt.show()
bottom option을 이용하면 bar graph의 시작을 지정할 수 있습니다.
따라서 bottom option을 이용하여 stacked bar graph를 그릴 수 있습니다.
코드의 결과입니다.
아래쪽에 분홍색 그래프가, 위쪽에는 하늘색 그래프가 존재합니다.
이번엔 4중 stack bar graph를 구현해 보았습니다.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
dict_sales = {
'apple': [34, 86, 94, 20],
'peach': [59, 4, 98, 93],
'graph': [59, 14, 26, 51],
'orange': [31, 5, 25, 84]
}
df_sales = pd.DataFrame(dict_sales)
print(df_sales)
list_column_label = list(df_sales.columns)
list_row_label = ['2021', '2022', '2023', '2024']
arr_bottom = np.array([0, 0, 0, 0])
for idx, col in enumerate(list_column_label):
data = np.array(df_sales.loc[:, col])
plt.bar(list_row_label, data,
bottom=arr_bottom,
width=0.5,
label=col)
arr_bottom = arr_bottom + data
plt.legend(loc='upper left')
plt.show()
-- Result
apple peach graph orange
0 34 59 59 31
1 86 4 14 5
2 94 98 26 25
3 20 93 51 84
apple, peach, graph, orange 각각의 데이터가 동일한 색상을 가지도록 stack 되었으며,
legend를 나타내어 각 색깔이 무슨 항목을 의미하는지 까지 명시하였습니다.
728x90
반응형
'Python > Python matplotlib' 카테고리의 다른 글
Comments