2016-07-27 13 views
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がの中央にカラースケール/凡例の数字を移動したいとそれぞれのフィールド。私は、ヒートマップ自体の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

関連する問題