Matplotlib을 사용하여 빠르게 다중 라인 그래프 생성하는 방법
Published on
데이터 시각화는 데이터 분석 파이프 라인의 핵심 요소입니다. 복잡한 데이터 세트를 명확하고 직관적으로 표현할 수 있으며, 원시 데이터 만으로는 명확하지 않은 추세와 패턴을 발견할 수 있습니다. 이러한 목적으로 사용 가능한 도구가 많지만, Matplotlib은 static, animated 및 interactive plot을 생성하는 다재다능하고 강력한 플랫폼을 제공하는 Python 라이브러리 중 가장 널리 사용됩니다.
Matplotlib에서 자주 사용되는 기능 중 하나는 하나의 차트에서 다중 라인 그래프를 생성할 수 있는 능력입니다. 이 포괄적인 가이드에서는 기본 원칙과 고급 개념에 대해 초점을 맞추어 이러한 시각화를 생성하는 방법에 대해 깊이 파고들 것입니다.
기본: 두 개의 라인 생성
두 개의 라인 그래프를 하나의 플롯에 그리는 간단한 시나리오로 시작해 보겠습니다. 온라인 포럼에 게시된 사용자가 게시한 코드는 y 축이 두 번 인쇄된다는 것을 보고했습니다.
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, y1)
plt.plot(x, y2, '-.')
plt.xlabel("X-axis data")
plt.ylabel("Y-axis data")
plt.title('multiple plots')
plt.show()
코드를 간단히 살펴보면 문제의 원인이 드러납니다: 플롯되는 y 값은 숫자 대신 문자열입니다. matplotlib이 문자열 데이터를 만나면 숫자 스케일에 따라이 값을 플롯하지 않습니다. 대신 문자 레이블을 각각의 x 좌표에 플롯하여 y 축에 여러 레이블이 겹치게 만듭니다.
문자열 문제 해결: 숫자로 변환
이 문제를 해결하려면 문자열의 "k"가 "e3"으로 대체되어 이러한 문자열이 과학적 표기법으로 숫자를 나타낼 수 있도록해야합니다. 그런 다음 Python의 float()
함수를 사용하여 부동 소수점 숫자로 변환 할 수 있습니다.
수정 된 코드는 다음과 같습니다.
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1])
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.')
plt.xlabel("X-axis data")
plt.ylabel("Y-axis data")
plt.title('multiple plots')
plt.show()
이 간단한 변경으로 사용자는 y축 레이블이 복제되지 않으면서 동일한 차트에 두 개의 선을 올바르게 그릴 수 있었습니다. 그러나 이 변환은 순전히 플로팅 목적으로 수행되며 원래 데이터를 수정하지 않는다는 것을 염두해야 합니다.
여러 선 그래프의 세부 조정: 범례, 그리드 라인 및 주석
범례는 legend()
함수를 사용하여 그래프에 추가할 수 있으며, 그리드 라인은 grid()
함수를 사용하여 켜거나 끌 수 있습니다. 주석을 위해서는 annotate()
함수를 사용하여 차트에 정보를 제공하는 텍스트를 추가할 수 있습니다.
이러한 기술을 적용하여 matplotlib에서 여러 선 그래프를 작성하는 최종 코드는 다음과 같을 수 있습니다.
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y1 = ['1000', '13k', '26k', '42k', '60k', '81k']
y2 = ['1000', '13k', '27k', '43k', '63k', '85k']
plt.plot(x, [float(i.replace('k', 'e3')) for i in y1], label='선 1')
plt.plot(x, [float(i.replace('k', 'e3')) for i in y2], '-.', label='선 2')
plt.xlabel("X축 데이터")
plt.ylabel("Y축 데이터")
plt.title('여러 그래프')
plt.grid(True)
plt.legend()
plt.annotate('Line 2의 Peak', xy=(4, 85000), xytext=(3, 70000),
arrowprops=dict(facecolor='black', shrink=0.05))
plt.show()
그림에서 볼 수 있듯이 Matplotlib을 사용하여 여러 선 그래프를 작성하는 것은 상대적으로 간단한 프로세스이며 아름답고 유익하며 통찰력있는 시각화를 만들기 위한 다양한 사용자 정의 옵션을 제공합니다.
FAQ
Q: Matplotlib을 사용하여 하나의 차트에 두 개 이상의 선을 그릴 수 있나요?
네, Matplotlib를 사용하여 여러 선을 그릴 수 있습니다. 각 선에 대한 필요한 데이터와 함께 plot()
함수를 반복하면 됩니다.
Q: Matplotlib로 생성할 수 있는 다른 유형의 그래프는 무엇인가요?
Matplotlib는 산점도, 막대 그래프, 히스토그램 및 3D plot을 비롯한 다양한 기타 플롯 유형을 지원합니다. 이 라이브러리는 매우 다재다능하며 거의 모든 데이터 시각화 요구 사항을 수용할 수 있습니다.
Q: Matplotlib를 사용하여 플롯을 파일로 저장할 수 있나요?
플롯을 생성한 후 savefig()
함수를 사용하여 파일로 저장할 수 있습니다. 함수는 파일 이름을 인수로 사용하며, 파일의 형식(예: PNG, PDF, SVG 등)을 적절한 파일 확장자를 사용하여 지정할 수 있습니다.
plt.savefig('my_plot.png')
Matplotlib 대체제: PyGWalker를 사용하여 데이터 시각화
pandas 데이터프레임을 시각화하는 데 Matplotlib을 사용하는 것 외에도, 데이터 시각화를 쉽게 생성할 수 있는 오픈 소스 파이썬 라이브러리인 PyGWalker (opens in a new tab)가 있습니다.
Python 코딩으로 복잡한 처리를 완료할 필요가 없습니다. 간단히 데이터를 가져와 변수를 끌어다 놓으면 다양한 종류의 데이터 시각화를 만들 수 있습니다! 조작에 대한 빠른 데모 비디오를 확인해보세요:
<br></br>
<div className="video-container">
<iframe width="800" height="600" src="https://www.youtube.com/embed/g5USsCdjyRY?autoplay=1&mute=1&loop=1&playlist=g5USsCdjyRY" title="YouTube video player" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowFullScreen playsInline></iframe>
</div>
이렇게 Jupyter Notebook에서 PyGWalker를 사용할 수 있습니다:
```python copy
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
또는 Kaggle Notebook/Google Colab에서 사용해볼 수도 있습니다:
PyGWalker는 Open Source 커뮤니티의 지원으로 만들어졌습니다. PyGWalker GitHub (opens in a new tab)에서 ⭐️을 주는 것을 잊지 마세요!
자주 묻는 질문
Matplotlib에서 한 차트에서 두 개 이상의 선을 그릴 수 있나요?
네, Matplotlib를 사용하여 한 차트에서 필요한 만큼 많은 선을 그릴 수 있습니다. 원하는 각 라인의 데이터로 plot() 함수를 반복하면 됩니다.
Matplotlib로 만들 수 있는 다른 종류의 plot은 어떤 것이 있나요?
Matplotlib는 산점도, 막대 그래프, 히스토그램, 심지어 3D plot을 비롯한 다양한 종류의 plot을 지원합니다. 라이브러리는 매우 다재다능하며 거의 모든 데이터 시각화 요구를 수용할 수 있습니다.
Matplotlib를 사용하여 그림을 파일로 저장하는 방법은 무엇인가요?
플롯을 생성한 후 savefig() 함수를 사용하여 파일로 저장할 수 있습니다. 함수는 파일 이름을 인수로 취하며 적절한 파일 확장자 (예 : PNG, PDF, SVG 등)를 사용하여 파일 형식을 지정할 수 있습니다.