Matplotlib 등고선 플롯
이 데모에서는 등고선 플롯이 무엇인지, 그리고 Matplotlib의 contour()
메서드를 사용하여 어떻게 등고선 플롯을 얻을 수 있는지 알아봅니다.
contour()
메서드를 사용하여 Matplotlib에서 윤곽 플롯 얻기
등고선 플롯에는 2차원 평면에 3차원 표면을 표시하는 방법이 있습니다. y축에 예측 변수 x
와 y
, 응답 변수 z
를 등고선으로 그래프로 표시합니다.
2차원 등고선 플롯은 두 변수에 따라 달라지는 스칼라 필드의 등치선입니다. 각 축의 변수를 이산화해 봅시다.
numpy.linspace()
의 도움으로 생성할 수 있는 분할된 x 구성 요소로 시작합니다. 그런 다음 numpy
를 가져옵니다.
x
는 500
값을 사용하여 -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()
출력:
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()
출력:
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