2016-07-27 29 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

我想在色标/图例移动号码的中间各自的领域。我(及其同事)发现它们在交叉点处的位置有点误导,特别是考虑到热图中x轴的滴答位于字段的中间。

如何将这些值以颜色比例移至字段中间(并切断10,这不是数据集中的值)?

+1

需要明确的是,在'DataArray.plot'的'levels'说法是用于制造连续变量离散,不处理分类变量。我打开了一个GitHub的问题,讨论添加直接支持分类绘图:https://github.com/pydata/xarray/issues/920 – shoyer

+0

感谢您的解释。我认为处理分类变量是PyData堆栈需要改进的地方。我想,Matplotlib和朋友们更关注花车。所以我会很高兴看到这增加。 – mondano

回答

2

为此,你必须matplotlib直接使用:

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

相关问题