Matplotlib 산점도

MatplotlibBeginner
지금 연습하기

소개

Matplotlib 산점도 (Scatter Plot) 실습에 오신 것을 환영합니다! 산점도는 데이터 시각화의 기본적인 도구로, 일반적으로 데이터 세트의 두 변수에 대한 값을 표시하는 데 사용됩니다. 변수 간의 관계나 상관관계를 관찰하는 데 탁월합니다.

이 실습에서는 Python 의 Matplotlib 라이브러리를 사용하여 산점도를 생성합니다. 다음 내용을 배우게 됩니다:

  • NumPy 를 사용하여 데이터 배열 생성하기.
  • plt.scatter()로 기본적인 산점도 생성하기.
  • 마커 크기와 색상을 포함한 플롯의 모양 사용자 정의하기.
  • 가독성을 높이기 위해 그리드 추가하기.

모든 작업은 WebIDE 환경에서 진행됩니다. 파일에 Python 코드를 작성하고 터미널에서 실행하게 됩니다. 이 환경은 비대화형이므로, plt.show()로 표시하는 대신 plt.savefig()를 사용하여 플롯을 이미지 파일로 저장하게 됩니다.

시작해 봅시다!

x 및 y 데이터 배열 생성

이 단계에서는 산점도에 사용할 데이터를 생성합니다. 산점도는 최소한 동일한 길이의 두 데이터 배열이 필요합니다. 하나는 x 축 좌표용이고 다른 하나는 y 축 좌표용입니다. Python 에서 수치 연산의 표준인 NumPy 라이브러리를 사용할 것입니다.

먼저 WebIDE 왼쪽 패널의 파일 탐색기에서 main.py 파일을 엽니다. 이 파일에 이 실습의 모든 코드를 작성하게 됩니다.

이제 NumPy를 가져오고 두 개의 간단한 데이터 배열을 생성하기 위해 main.py에 다음 코드를 추가합니다.

import numpy as np

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

코드를 살펴보겠습니다.

  • import numpy as np: 이 줄은 NumPy 라이브러리를 가져오고 관례적인 별칭 np를 부여합니다.
  • x = np.array([...]): 이 줄은 수평 축에 대한 데이터 포인트를 포함하는 x라는 NumPy 배열을 생성합니다.
  • y = np.array([...]): 이 줄은 수직 축에 대한 데이터 포인트를 포함하는 y라는 NumPy 배열을 생성합니다.

이제 main.py 파일에 이 코드가 포함되어야 합니다. 다음 단계에서는 이 데이터를 사용하여 첫 번째 플롯을 생성합니다.

plt.scatter(x, y) 를 사용하여 산점도 플로팅

이 단계에서는 생성한 데이터를 사용하여 기본적인 산점도를 생성합니다. 플롯 생성을 위한 간단한 인터페이스를 제공하는 matplotlib.pyplot 모듈을 사용할 것입니다.

먼저 matplotlib.pyplot을 가져와야 합니다. 그런 다음 plt.scatter() 함수를 사용하여 플롯을 생성할 수 있습니다. 마지막으로 플롯을 파일로 저장해야 합니다. 소개에서 언급했듯이 이 환경에서는 plt.show()를 사용하여 플롯을 직접 표시할 수 없습니다. 대신 plt.savefig()를 사용하여 이미지로 저장할 것입니다.

main.py 파일을 다음 코드로 업데이트하세요. 기존 코드 아래에 새 줄을 추가합니다.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

## Create scatter plot
plt.scatter(x, y)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot.png')

print("Scatter plot saved to scatter_plot.png")

코드 설명:

  • import matplotlib.pyplot as plt: 플로팅 모듈을 가져오고 표준 별칭 plt를 부여합니다.
  • plt.scatter(x, y): 이것이 핵심 함수입니다. xy 배열을 받아 각 (x, y) 값 쌍을 점으로 플로팅합니다.
  • plt.savefig('/home/labex/project/scatter_plot.png'): 이 함수는 현재 그림을 ~/project 디렉터리의 scatter_plot.png라는 파일로 저장합니다.

이제 WebIDE 하단의 터미널에서 스크립트를 실행합니다.

python3 main.py

터미널에서 다음과 같은 출력을 볼 수 있습니다.

Scatter plot saved to scatter_plot.png

왼쪽 파일 탐색기에 scatter_plot.png라는 새 파일이 나타납니다. 이 파일을 두 번 클릭하여 첫 번째 산점도를 확인하세요!

Scatter plot

s 매개변수를 사용하여 마커 크기 사용자 정의

이 단계에서는 산점도에서 마커 (점) 의 크기를 사용자 정의하는 방법을 배웁니다. plt.scatter() 함수에는 마커 크기를 제어하는 선택적 매개변수 s가 있습니다.

단일 숫자를 제공하여 모든 마커의 크기를 동일하게 만들거나, 숫자 배열 ( xy 데이터와 길이가 같음) 을 제공하여 각 마커에 대한 고유한 크기를 지정할 수 있습니다. 플롯을 더 흥미롭게 만들기 위해 후자를 사용해 보겠습니다.

main.py 파일을 수정합니다. sizes 배열을 생성하고 plt.scatter() 함수의 s 매개변수에 전달할 것입니다.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])

## Create scatter plot with custom sizes
plt.scatter(x, y, s=sizes)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_sizes.png')

print("Scatter plot with custom sizes saved to scatter_plot_sizes.png")

업데이트된 코드에서는 sizes 배열을 추가하고 plt.scatter() 호출을 plt.scatter(x, y, s=sizes)로 수정했습니다. 이제 각 점은 sizes 배열의 해당 크기로 플로팅됩니다.

변경 사항을 보려면 스크립트를 다시 실행합니다.

python3 main.py

스크립트가 완료된 후 scatter_plot_sizes.png를 다시 엽니다. 이제 마커의 크기가 달라져 플롯이 시각적으로 더 유익해진 것을 알 수 있습니다.

Scatter plot with custom sizes

c 매개변수를 사용하여 마커 색상 변경

이 단계에서는 마커의 색상을 사용자 정의하는 방법을 배웁니다. 크기와 마찬가지로 plt.scatter() 함수의 c 매개변수를 사용하여 색상을 제어할 수 있습니다.

단일 색상 이름 (예: 'red') 을 전달하여 모든 마커의 색상을 동일하게 만들거나, 색상 배열을 전달하여 각 마커에 특정 색상을 지정할 수 있습니다. 각 점에 고유한 색상을 할당해 보겠습니다.

colors 배열을 포함하고 c 매개변수에 전달하도록 main.py 파일을 업데이트하세요.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot with custom sizes and colors
plt.scatter(x, y, s=sizes, c=colors)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_colors.png')

print("Scatter plot with custom colors saved to scatter_plot_colors.png")

이제 색상 이름이 포함된 colors 배열을 추가하고 함수 호출을 plt.scatter(x, y, s=sizes, c=colors)로 업데이트했습니다.

터미널에서 스크립트를 실행합니다.

python3 main.py

scatter_plot_colors.png를 다시 한번 엽니다. 배열에 정의된 대로 각 점이 다른 크기와 색상을 갖는 다채로운 산점도를 볼 수 있습니다.

Scatter plot with custom colors

plt.grid() 를 사용하여 그리드 추가

마지막 단계에서는 산점도에 그리드를 추가합니다. 그리드를 사용하면 축에서 데이터 포인트의 값을 더 쉽게 읽을 수 있습니다.

Matplotlib 에서 그리드를 추가하는 것은 매우 간단합니다. 플롯을 저장하기 전에 plt.grid() 함수를 호출하기만 하면 됩니다. 기본적으로 plt.grid(True)는 그리드를 표시합니다.

스크립트에 이 기능을 추가해 보겠습니다. plt.grid() 호출을 포함하도록 main.py를 수정합니다.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot
plt.scatter(x, y, s=sizes, c=colors)

## Add a grid
plt.grid(True)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_grid.png')

print("Scatter plot with grid saved to scatter_plot_grid.png")

plt.savefig() 바로 앞에 plt.grid(True)를 추가했습니다. 이는 Matplotlib 에 플롯에 그리드를 그리도록 지시합니다.

스크립트의 최종 버전을 실행합니다.

python3 main.py

이제 scatter_plot_grid.png 이미지를 확인합니다. 플롯의 배경에 그리드가 추가되어 사용자 정의 산점도가 완성되었습니다.

Scatter plot with grid

요약

실습을 완료하신 것을 축하드립니다! Matplotlib 을 사용하여 산점도를 생성하고 사용자 정의하는 기본 사항을 성공적으로 익혔습니다.

이번 실습에서는 다음을 연습했습니다.

  • NumPy 를 사용하여 플로팅 데이터를 생성했습니다.
  • plt.scatter()로 기본 산점도를 생성했습니다.
  • s 매개변수를 사용하여 마커 크기를 사용자 정의했습니다.
  • c 매개변수를 사용하여 마커 색상을 변경했습니다.
  • plt.grid()로 플롯에 그리드를 추가했습니다.
  • plt.savefig()로 플롯을 파일에 저장했습니다.

이것들은 Python 에서 데이터 시각화를 위한 필수적인 기술입니다. 이제 데이터의 관계를 탐색하기 위해 유익하고 시각적으로 매력적인 산점도를 만들 수 있습니다. 학습을 계속하려면 제목과 레이블 추가, 다른 마커 스타일 사용 또는 고급 시각화를 위한 컬러맵 적용 등을 탐색해 볼 수 있습니다.