Matplotlib 등고선 플롯

Salman Mehmood 2024년2월15일
  1. contour() 메서드를 사용하여 Matplotlib에서 윤곽 플롯 얻기
  2. Matplotlib에서 contour() 메서드 사용
Matplotlib 등고선 플롯

이 데모에서는 등고선 플롯이 무엇인지, 그리고 Matplotlib의 contour() 메서드를 사용하여 어떻게 등고선 플롯을 얻을 수 있는지 알아봅니다.

contour() 메서드를 사용하여 Matplotlib에서 윤곽 플롯 얻기

등고선 플롯에는 2차원 평면에 3차원 표면을 표시하는 방법이 있습니다. y축에 예측 변수 xy, 응답 변수 z를 등고선으로 그래프로 표시합니다.

2차원 등고선 플롯은 두 변수에 따라 달라지는 스칼라 필드의 등치선입니다. 각 축의 변수를 이산화해 봅시다.

numpy.linspace()의 도움으로 생성할 수 있는 분할된 x 구성 요소로 시작합니다. 그런 다음 numpy를 가져옵니다.

x500 값을 사용하여 -2에서 2까지 선형 간격을 두고 싶습니다. y의 경우에도 동일한 작업을 수행하려고 합니다.

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)

np.meshgrid() 메서드를 사용하여 2차원 메쉬를 생성할 수 있으며 대문자 x와 대문자 y에 저장됩니다. 그런 다음 x의 sin과 y의 cos를 사용하여 스칼라 필드를 평가할 수 있습니다.

x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

등고선 플롯은 contour() 메서드를 사용하여 생성되며 세 개의 매개변수를 허용합니다. 색상 키와 함께 기능의 아이소라인을 볼 수 있습니다.

이 위치의 스칼라 필드 값에 대해 plot.colorbar()를 사용하여 색상 스케일을 활성화하여 어떤 값이 특정 색상으로 표시되는지에 대한 정보를 얻을 수 있습니다.

plot.contour(x, y, z)
plot.colorbar()

전체 소스 코드:

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

plot.contour(x, y, z)
plot.colorbar()
plot.show()

출력:

윤곽선 플롯을 얻기 위해 윤곽선 방법 사용

Matplotlib에서 contour() 메서드 사용

contour()라는 또 다른 방법은 등고선 플롯을 생성하지만 중간 영역은 해당 색상 값으로 채워집니다.

암호:

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

plot.contourf(x, y, z)
plot.colorbar()
plot.show()

출력:

matplotlib에서 contourf() 메서드 사용

levels 인수를 사용하여 레벨 수를 변경할 수 있습니다. 레벨은 아이소라인의 수입니다.

예를 들어 30개의 아이소라인을 만든 다음 전환이 훨씬 더 부드러워지는지 확인합니다. 예를 들어 vmin이 -1이고 vmax가 0.5인 경우 아이소라인을 원하는 값을 수동으로 선택할 수도 있습니다.

다음 코드를 실행하면 값이 너무 높기 때문에 노란색 영역을 아이소라인으로 덮을 수 없습니다.

암호:

import matplotlib.pyplot as plot
import numpy as np

x = np.linspace(-2, 2, 500)
y = np.linspace(-2, 2, 500)
x, y = np.meshgrid(x, y)
z = np.sin(x) + np.cos(y)

plot.contourf(x, y, z, levels=30, vmin=-1, vmax=0.5)
plot.colorbar()
plot.show()

출력:

레벨 수를 변경하고 아이소라인을 포함할 값을 수동으로 선택

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Matplotlib Plot