matplotlib에서 두 개의 수직선 사이를 채우십시오.


101

설명서 의 예제 를 살펴 matplotlib보았지만 두 개의 특정 수직선 사이의 영역을 채우는 플롯을 만드는 방법이 명확하지 않았습니다.

예를 들어, ( 플롯 의 전체 범위에 대해) x=0.2와 사이에 플롯을 만들고 싶다고 가정합니다 . 내가 사용 하는가 , 또는 ?x=4yfill_betweenfillfill_betweenx

where이 조건을 사용할 수 있습니까 ?

답변:


203

axvspan함수 사이의 채우기 중 하나가 아닌 원하는 것처럼 들립니다 . 차이점은 axvspan(및 axhspan)이 확대 / 축소 방법에 관계없이 플롯의 전체 y (또는 x) 범위를 채운다는 것입니다.

예를 들어 axvspan8과 14 사이의 x 영역을 강조 표시하는 데 사용하겠습니다 .

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')

plt.show()

여기에 이미지 설명 입력

fill_betweenx이 작업을 수행 하는 데 사용할 수 있지만 사각형의 범위 (x 및 y 모두)는 데이터 좌표에 있습니다. 를 사용 axvspan하면 직사각형의 y 범위는 기본적으로 0과 1로 설정되며 좌표축 좌표 (즉, 플롯 높이의 백분율)에 있습니다.

이를 설명하기 위해 직사각형을 높이의 10 %에서 90 %까지 확장 해 보겠습니다 (전체 범위를 차지하는 대신). 확대 / 축소 또는 이동을 시도하고 y 범위는 디스플레이 공간에서 고정 된 것으로 표시되고 x 범위는 확대 / 축소 / 이동과 함께 이동합니다.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')

plt.show()

여기에 이미지 설명 입력


3
사용에 대한 솔루션에 관심이있는 사람들이 fill_between이상은 "위글", 수직선은 한 번 봐 가지고 transform매개 변수 (그리고 이 답 )
씨 Tsjolder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.