Matplotlib의 스택 막대 플롯

Suraj Joshi 2023년1월30일
  1. 스택 바 플롯 Matplotlib
  2. Pandas를 사용하여 스택 바 플롯 Matplotlib
Matplotlib의 스택 막대 플롯

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()

출력:

누적 막대 플롯 Matplotlib를 설명하는 예

여기에는 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()

출력:

Matplotlib의 스택 바 플롯

하나의 막대 그림을 다른 막대 그림 위에 쌓습니다. 플롯에서 먼저data3을 다른 막대의 기준으로 사용하는 Python 데이터로 플롯 한 다음data2의 막대를 플로팅하고data3의 막대를 기준으로 data2. data3 위에data2의 스택 바를 쌓기 위해bottom=np.array(data3)를 설정합니다.

마찬가지로data1에 대한 막대를 플로팅하는 동안data2data3의 막대 플롯을 기준으로 사용합니다. 이를 위해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()

출력:

리스트 내포을 사용하여 Matplotlib의 스택 막대 플롯

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를 사용하여 Matplotlib의 스택 막대 플롯

Pandas DataFrame에서 누적 막대 그림을 생성합니다. 여기서 한 열의 막대 그림이 DataFrame의 각 인덱스에 대해 다른 열 위에 쌓입니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

관련 문장 - Matplotlib Visualizations