에서 plt.imshow()
공식 가이드, 우리는 화면 제어를 축의 화면 비율을 알고있다. 제 말로, aspect는 정확히 x 단위 와 y 단위 의 비율입니다 . 대부분의 경우 우리는 의도하지 않게 수치를 왜곡하지 않기 때문에 1로 유지하고 싶습니다. 그러나 실제로 1이 아닌 다른 값을 aspect를 지정해야하는 경우가 있습니다. 질문자는 x 및 y 축이 다른 물리적 단위를 가질 수 있다는 좋은 예를 제공했습니다. x는 km, y는 m이라고 가정 해 보겠습니다. 따라서 10x10 데이터의 경우 범위는 [0,10km, 0,10m] = [0, 10000m, 0, 10m]이어야합니다. 이 경우 기본 aspect = 1을 계속 사용하면 그림의 품질이 정말 나빠집니다. 따라서 그림을 최적화하기 위해 aspect = 1000을 지정할 수 있습니다. 다음 코드는이 방법을 보여줍니다.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
rng=np.random.RandomState(0)
data=rng.randn(10,10)
plt.imshow(data, origin = 'lower', extent = [0, 10000, 0, 10], aspect = 1000)
그럼에도 불구하고 질문자의 요구에 부응 할 수있는 대안이 있다고 생각합니다. 범위를 [0,10,0,10]으로 설정하고 추가 xy 축 레이블을 추가하여 단위를 표시 할 수 있습니다. 다음과 같이 코드.
plt.imshow(data, origin = 'lower', extent = [0, 10, 0, 10])
plt.xlabel('km')
plt.ylabel('m')
만들기 위해 정확한 그림 항상 x_max-x_min = x_res * data.shape[1]
그리고 y_max - y_min = y_res * data.shape[0]
, where extent = [x_min, x_max, y_min, y_max]
. 기본적으로 aspect = 1
는 단위 픽셀이 정사각형임을 의미합니다. 이 기본 동작은 값이 다른 x_res 및 y_res에서도 잘 작동합니다. 이전 예제를 확장하여 x_res는 1.5이고 y_res는 1이라고 가정합니다. 따라서 범위는 [0,15,0,10]과 같아야합니다. 기본 측면을 사용하면 직사각형 색상 픽셀을 사용할 수 있지만 단위 픽셀은 여전히 정사각형입니다!
plt.imshow(data, origin = 'lower', extent = [0, 15, 0, 10])
data=rng.randn(10,5)
plt.imshow(data, origin = 'lower', extent = [0, 5, 0, 5])
컬러 픽셀의 측면은 x_res / y_res
. 측면을 단위 픽셀의 측면으로 설정하면 (즉 aspect = x_res / y_res = ((x_max - x_min) / data.shape[1]) / ((y_max - y_min) / data.shape[0])
) 항상 정사각형 색상 픽셀이 제공됩니다. aspect = 1.5를 변경하여 x 축 단위가 y 축 단위의 1.5 배가되도록 정사각형 컬러 픽셀과 정사각형 전체 도형이지만 직사각형 픽셀 단위가되도록 할 수 있습니다. 분명히 일반적으로 허용되지 않습니다.
data=rng.randn(10,10)
plt.imshow(data, origin = 'lower', extent = [0, 15, 0, 10], aspect = 1.5)
가장 바람직하지 않은 경우는 aspect를 1.2와 같은 임의의 값으로 설정하여 정사각형 단위 픽셀이나 정사각형 색상 픽셀이되지 않는 경우입니다.
plt.imshow(data, origin = 'lower', extent = [0, 15, 0, 10], aspect = 1.2)
간단히 말해서, 올바른 범위를 설정하고 matplotlib가 나머지 작업을 수행하도록하는 것으로 충분합니다 (x_res! = y_res에도 불구하고)! 꼭 필요한 경우에만 측면을 변경하십시오.
scalar
옵션 에 대해 아무것도 말하지 않습니다 .y-axis
주어진 스칼라 로 크기를 조정하는 것으로 보입니다 .