본문 바로가기
Python/matplotlib

matplotlib TypeError: unhashable type: 'list' 해결하기

by PySun 2024. 10. 31.
반응형

소개

때때로 Matplotlib을 사용할 때 'TypeError: unhashable type: 'list''라는 오류가 발생할 수 있습니다. 이 오류는 주로 리스트를 딕셔너리의 키로 사용하려 할 때 발생합니다. 이 블로그 글에서는 이 에러의 원인과 해결 방법을 살펴보겠습니다.

에러 발생 예시 코드

이제 'TypeError: unhashable type: 'list'' 에러가 발생할만한 간단한 예시 코드를 확인해 보겠습니다.

import matplotlib.pyplot as plt

# x와 y 데이터 정의
x = [[1, 2, 3], [4, 5, 6]]  # 리스트로 작성된 x 데이터
y = [1, 2, 3]

# 산점도 그래프 그리기
plt.scatter(x, y)
plt.show()

에러 해결 방법

1. 리스트 대신 넘파이 배열 사용

리스트를 사용하고 싶다면, 리스트 대신 NumPy 배열을 사용하는 것이 좋습니다. NumPy 배열은 해시 가능하므로 이 오류를 회피할 수 있습니다.

import matplotlib.pyplot as plt
import numpy as np

# NumPy 배열로 x 데이터 정의
x = np.array([[1, 2, 3], [4, 5, 6]])
y = [1, 2, 3]

# 산점도 그래프 그리기
plt.scatter(x.flatten(), y)  # flatten()으로 1차원 배열로 변경
plt.show()

2. 데이터를 1차원 형태로 변경

이 오류는 2차원 배열을 사용하려 할 때 발생할 수 있으므로, 시각화하려는 데이터를 1차원 배열로 변환해 줄 필요가 있습니다. 이를 통해 플롯이 원활하게 생성될 수 있도록 합니다.

import matplotlib.pyplot as plt

# x와 y 데이터를 1차원으로 정의
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]

# 산점도 그래프 그리기
plt.scatter(x, y)
plt.show()

마무리

이 블로그 글에서는 Matplotlib에서 발생하는 'TypeError: unhashable type: 'list'' 에러에 대한 해결 방법을 몇 가지 살펴보았습니다. 리스트 대신 NumPy 배열을 사용하거나 데이터를 1차원으로 변경함으로써 이 오류를 극복할 수 있습니다. Matplotlib을 사용할 때는 각 데이터 형태에 주의하여 보다 원활한 코드 실행이 가능하도록 하세요. 항상 창의력을 발휘하며 즐거운 코딩 하시길 바랍니다!

반응형