Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 조건이 참일 때 특정 막대의 색상만 변경하는 방법

Matplotlib에서 조건이 참일 때 특정 막대 하나의 색상만 다르게 표시하고 싶다면, 값 목록과 함께 색상 목록을 만들어 처리할 수 있습니다. 예를 들어 값이 2인 막대만 노란색으로 표시하고, 나머지는 모두 빨간색으로 칠하려면 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 해결됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 조정합니다.
  • 막대의 너비(width)를 나타내는 변수를 초기화합니다.
  • 값(values) 목록과 색상(colors) 목록 두 개를 준비합니다.
  • bar() 메서드를 사용해 막대그래프를 그립니다.
  • show() 메서드로 완성된 그림을 화면에 표시합니다.

예제 코드

import numpy as np
import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

data = np.arange(5)
width = 0.5
vals = [1, 2, 1, 5, 3]
colors = ["red" if i != 2 else "yellow" for i in vals]

plt.bar(data, vals, width, color=colors)
plt.show()

핵심 로직 설명

위 코드의 핵심은 다음 한 줄입니다.

colors = ["red" if i != 2 else "yellow" for i in vals]

리스트 컴프리헨션이 vals의 각 값을 순회하면서, 값이 2가 아니면 "red"를, 2이면 "yellow"를 담은 새로운 색상 목록을 생성합니다. 이렇게 만든 색상 목록을 bar() 메서드의 color 인자에 전달하면, 조건에 해당하는 막대만 다른 색으로 강조됩니다.

실행 결과

코드를 실행하면 값이 1, 1, 5, 3인 막대는 빨간색으로, 값이 2인 막대만 노란색으로 표시된 막대그래프가 출력됩니다. 이 방식은 특정 임계값이나 기준점을 시각적으로 강조할 때 매우 유용합니다. 조건문의 비교 연산자(>, <, == 등)를 바꾸기만 하면 원하는 기준에 따라 자유롭게 색상을 지정할 수 있습니다.