1

난 생성 된 불연속 값 (= 범주/요소)와 히트 맵을 가지고matplotlib/xarray에서 색상 눈금 레이블을 색상이 지정된 필드의 중간으로 옮기는 방법은 무엇입니까? 다음

import xarray 
dats = xarray.DataArray([[2,4,3,5,1],[8,4,5,3,2], [9,3,4,4,1]]) 
dats.plot(levels=range(0, 11, 1), cmap='Blues') 

Heatmap

I가 중간에 컬러 스케일/범례에 번호를 이동하고자

각각의 필드. I (및 동료)는 필드 교차점에서 자신의 위치를 ​​찾았습니다. 특히 히트 맵 자체의 x 축에서 눈금이 필드의 중간에 있다는 점을 고려하면 오도 된 것입니다.

필드의 중간까지 색상 스케일에서 값을 이동하고 (데이터 세트의 값이 아닌 10을 자르는 방법) 어떻게해야합니까? 당신이하기 matplotlib 직접 사용할 필요는이를 위해

+1

이 명확하기는 DataArray.plot''에서'levels' 인수는, 연속 변수 이산하지로 만들기위한 것입니다 범주 형 변수를 처리합니다. 카테고리 플로팅에 직접 지원을 추가하는 방법에 대해 GitHub 문제를 열었습니다. https://github.com/pydata/xarray/issues/920 – shoyer

+0

설명해 주셔서 감사합니다. 필자는 PyData 스택의 개선이 필요한 범주 형 변수 처리가 무엇이라고 생각합니다. Matplotlib과 친구들은 오히려 수레에 중점을 둡니다. 그래서 나는 이것을 보니 매우 기쁩니다. – mondano

답변

2

:

import xarray 
import matplotlib.pylab as plt 
dats = xarray.DataArray([[2,4,3,5,1],[8,4,5,3,2], [9,3,4,4,1]]) 
qm = dats.plot(levels=range(0, 11, 1), cmap='Blues', add_colorbar = False) 

cbar = plt.colorbar(qm) 
cbar.ax.get_yaxis().set_ticks([]) 
for j in range(0, 10, 1): 
    cbar.ax.text(.5, (j+.5)/10., j, ha='center', va='center', color='red') 
cbar.ax.get_yaxis().labelpad = 15 

plt.show() 

enter image description here

관련 문제