Ajustement du quadrillage et des tiques dans matplotlib imshow

Je suis en train de tracer une matrice de valeurs et souhaitez ajouter des lignes de quadrillage de faire la limite entre les valeurs les plus claires.
Malheureusement, imshow décidé de placer les marques de graduation dans le milieu de chaque voxel. Est-il possible de

a) retirer les tiques, mais laisser l'étiquette dans le même emplacement et
b) ajouter les lignes du quadrillage entre les limites de pixels?

import matplotlib.pyplot as plt
import numpy as np

im = plt.imshow(np.reshape(np.random.rand(100), newshape=(10,10)),
                    interpolation='none', vmin=0, vmax=1, aspect='equal');
ax = plt.gca();
ax.set_xticks(np.arange(0, 10, 1));
ax.set_yticks(np.arange(0, 10, 1));
ax.set_xticklabels(np.arange(1, 11, 1));
ax.set_yticklabels(np.arange(1, 11, 1));

Image sans le quadrillage et avec graduations dans l'mauvais emplacement
Ajustement du quadrillage et des tiques dans matplotlib imshow

ax.grid(color='w', linestyle='-', linewidth=2)

Image avec le quadrillage dans le mauvais emplacement:

Ajustement du quadrillage et des tiques dans matplotlib imshow

source d'informationauteur Joe Bathelt