Skip to content

Matplotlib을 사용하여 빠르게 다중 라인 그래프 생성하는 방법

Updated 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)가 있습니다.

PyGWalker for Data visualization (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에서 사용해볼 수도 있습니다:

Kaggle Notebook에서 PyGWalker 실행하기 (opens in a new tab)Google Colab에서 PyGWalker 실행하기 (opens in a new tab)GitHub에서 PyGWalker에 ⭐️주기 (opens in a new tab)
Kaggle Notebook에서 PyGWalker 실행하기 (opens in a new tab)Google Colab에서 PyGWalker 실행하기 (opens in a new tab)GitHub에서 PyGWalker에 ⭐️주기 (opens in a new tab)

PyGWalker는 Open Source 커뮤니티의 지원으로 만들어졌습니다. PyGWalker GitHub (opens in a new tab)에서 ⭐️을 주는 것을 잊지 마세요!

자주 묻는 질문

Matplotlib에서 한 차트에서 두 개 이상의 선을 그릴 수 있나요?

네, Matplotlib를 사용하여 한 차트에서 필요한 만큼 많은 선을 그릴 수 있습니다. 원하는 각 라인의 데이터로 plot() 함수를 반복하면 됩니다.

Matplotlib로 만들 수 있는 다른 종류의 plot은 어떤 것이 있나요?

Matplotlib는 산점도, 막대 그래프, 히스토그램, 심지어 3D plot을 비롯한 다양한 종류의 plot을 지원합니다. 라이브러리는 매우 다재다능하며 거의 모든 데이터 시각화 요구를 수용할 수 있습니다.

Matplotlib를 사용하여 그림을 파일로 저장하는 방법은 무엇인가요?

플롯을 생성한 후 savefig() 함수를 사용하여 파일로 저장할 수 있습니다. 함수는 파일 이름을 인수로 취하며 적절한 파일 확장자 (예 : PNG, PDF, SVG 등)를 사용하여 파일 형식을 지정할 수 있습니다.