Matplotlib에서 막대 그래프(bar plot)를 동적으로 업데이트하려면 다음 단계를 따르면 됩니다.
- 그림(figure) 크기를 설정하고 서브플롯 간의 여백(padding)을 조정합니다.
- 새로운 그림을 생성하거나 기존 그림을 활성화합니다.
- 데이터 포인트와 색상 목록을 만듭니다.
- bar() 메서드를 사용하여 data와 colors로 막대를 그립니다.
- FuncAnimation() 클래스를 사용하여 함수 animate를 반복적으로 호출하는 애니메이션을 만듭니다. 이 함수는 막대의 높이와 면 색상(facecolor)을 설정합니다.
- 그림을 화면에 표시하려면 show() 메서드를 사용합니다.
예제 코드
import numpy as np
from matplotlib import animation as animation, pyplot as plt, cm
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
data = [1, 4, 3, 2, 6, 7, 3]
colors = ['red', 'yellow', 'blue', 'green', 'black']
bars = plt.bar(data, data, facecolor='green', alpha=0.75)
def animate(frame):
global bars
index = np.random.randint(1, 7)
bars[frame].set_height(index)
bars[frame].set_facecolor(colors[np.random.randint(0, len(colors))])
ani = animation.FuncAnimation(fig, animate, frames=len(data))
plt.show()코드 설명
위 코드는 7개의 데이터 포인트로 초기 막대 그래프를 생성한 후, FuncAnimation이 프레임마다 animate 함수를 호출합니다. 각 호출마다 해당 프레임의 막대 높이가 1~6 사이의 무작위 값으로 변경되고, 미리 정의된 색상 목록에서 무작위로 선택된 색상으로 막대의 색이 바뀝니다. 그 결과 데이터 값과 색상이 실시간으로 변하는 동적 애니메이션 막대 그래프를 확인할 수 있습니다.
실행 결과
코드를 실행하면 각 막대의 높이와 색상이 프레임마다 무작위로 변화하는 애니메이션이 출력됩니다.