Seaborn 및 Matplotlib를 사용하여 히트 맵 및 라인 플롯의 공유 서브 플롯에서 x 축 눈금 정렬

닉 푸치 노

공유 x 축이있는 Seaborn을 사용하여 히트 맵과 라인 플롯을 플로팅하면 히트 맵 의 눈금이 히트 맵 막대의 중앙에 배치됩니다.

결과적으로 하단 라인 플롯은 라인 플롯 틱이 0에서 시작해야하므로 실제 데이터를 반영하지 않고 히트 맵 틱 위치 및 레이블을 상속합니다.

즉, 두 플롯의 틱을 x 축 원점에서 시작 (최적)으로 이동하거나 선 플롯을 히트 맵 셀 너비의 절반만큼 오른쪽으로 이동하여 틱 위치와 레이블을 유지해야합니다 (해키 ).

아래 코드는 문제를 빠르게 재현합니다.

f,[ax_heat,ax_line]=plt.subplots(nrows=2,figsize=(10, 8),sharex=True)

data_heat = np.random.rand(4, 6)
data_line= np.random.randn(6,1)

sb.heatmap(data=data_heat,robust=True, center=0,cbar=False, ax=ax_heat)
sb.lineplot(data=data_line, ax=ax_line)

선 플롯 틱이 이동 한 히트 맵 및 liineplot의 서브 플롯

데릭 오

이것은 해키 솔루션이지만 x 축을 너비의 절반만큼 왼쪽으로 이동할 수 있습니다.

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb

f,[ax_heat,ax_line]=plt.subplots(nrows=2,figsize=(10, 8),sharex=True)

data_heat = np.random.rand(4, 6)
data_line = np.random.randn(6,1)

# generalizable code regardless of spacing:
ax = sb.heatmap(data=data_heat,robust=True, center=0,cbar=False, ax=ax_heat)
width = ax.get_xticks()[1] - ax.get_xticks()[0]
new_ax = ax.get_xticks() - 0.5*width
ax.set_xticks(new_ax)
sb.lineplot(data=data_line, ax=ax_line)
plt.show()

여기에 이미지 설명 입력

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관