Matplotlib의 스택 막대 플롯
![Matplotlib의 스택 막대 플롯](/img/Matplotlib/feature-image---Stack-bar-plots-Matplotlib.webp)
matplotlib.pyplot.bar()
메서드를 사용하여 Matplotlib에서 막대 플롯을 생성합니다. 특정 데이터 세트의 막대 플롯을 다른 데이터 세트 위에 쌓기 위해 스택에 필요한 모든 데이터 세트를 추가하고 합계를bar()
메서드에bottom
매개 변수로 전달합니다.
import matplotlib.pyplot as plt
data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]
year = ["2015", "2016", "2017", "2018", "2019"]
fig, ax = plt.subplots(3, 1, figsize=(10, 8))
ax[0].bar(year, data1, color="red")
ax[0].legend(["C++"])
ax[1].bar(year, data2, color="yellow")
ax[1].legend(["JavaScript"])
ax[2].bar(year, data3, color="green")
ax[2].legend(["Python"])
plt.show()
출력:
여기에는 5 년 동안 회사 직원이 선호하는 프로그래밍 언어를 나타내는 세 개의 별도 막대 그림이 있습니다. 한 언어의 막대 그림을 다른 언어 위에 쌓는 방법에 대해 논의하고 단일 막대 그림을 사용하여 수년 동안 프로그래밍 언어의 전반적인 선택을 연구합니다.
스택 바 플롯 Matplotlib
import numpy as np
import matplotlib.pyplot as plt
data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]
year = ["2015", "2016", "2017", "2018", "2019"]
plt.figure(figsize=(9, 7))
plt.bar(year, data3, color="green", label="Python")
plt.bar(year, data2, color="yellow", bottom=np.array(data3), label="JavaScript")
plt.bar(year, data1, color="red", bottom=np.array(data3) + np.array(data2), label="C++")
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()
출력:
하나의 막대 그림을 다른 막대 그림 위에 쌓습니다. 플롯에서 먼저data3
을 다른 막대의 기준으로 사용하는 Python 데이터로 플롯 한 다음data2
의 막대를 플로팅하고data3
의 막대를 기준으로 data2
. data3
위에data2
의 스택 바를 쌓기 위해bottom=np.array(data3)
를 설정합니다.
마찬가지로data1
에 대한 막대를 플로팅하는 동안data2
및data3
의 막대 플롯을 기준으로 사용합니다. 이를 위해data1
의 막대를 플로팅하는 동안bottom=np.array(data3)+np.array(data2)
를 설정합니다.
주목해야 할 중요한 점은bottom
매개 변수에 대한 데이터를 추가하기 위해 NumPy 배열을 사용해야한다는 점입니다. bottom=data3+data2
를 설정하면data3
목록 끝에data2
의 요소를 추가하여 목록별로 생성합니다.
NumPy 배열을 사용하지 않으려면 목록 이해력을 사용하여 목록의 해당 요소를 추가 할 수 있습니다.
import numpy as np
import matplotlib.pyplot as plt
data1 = [30, 20, 10, 0, 0]
data2 = [20, 20, 20, 20, 0]
data3 = [50, 60, 70, 80, 100]
year = ["2015", "2016", "2017", "2018", "2019"]
plt.figure(figsize=(9, 7))
plt.bar(year, data3, color="green", label="Python")
plt.bar(year, data2, color="yellow", bottom=data3, label="JavaScript")
plt.bar(
year,
data1,
color="red",
bottom=[sum(data) for data in zip(data2, data3)],
label="C++",
)
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()
출력:
Pandas를 사용하여 스택 바 플롯 Matplotlib
Python에서 Pandas
라이브러리를 사용하여 Python에서 누적 막대 플롯을 생성 할 수도 있습니다.
import pandas as pd
import matplotlib.pyplot as plt
years = ["2015", "2016", "2017", "2018", "2019"]
data = {
"Python": [50, 60, 70, 80, 100],
"JavaScript": [20, 20, 20, 20, 0],
"C++": [30, 20, 10, 0, 0],
}
df = pd.DataFrame(data, index=years)
df.plot(kind="bar", stacked=True, figsize=(10, 8))
plt.legend(loc="lower left", bbox_to_anchor=(0.8, 1.0))
plt.show()
출력:
Pandas DataFrame에서 누적 막대 그림을 생성합니다. 여기서 한 열의 막대 그림이 DataFrame의 각 인덱스에 대해 다른 열 위에 쌓입니다.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn