Python: deixe os valores Numpy NaN do mapa de calor matplotlib e sua legenda [duplicado]

Esta pergunta já tem uma resposta aqui:

Mapa de calor Matplotlib em escala de cinza com campos quadrados visualmente distintos "NA" 2 respostas

Eu tenho uma matriz numpy que eu preciso traçar como um mapa de calor. A matriz numpy também conteria valores de NaN que eu preciso excluir da plotagem. Foi-me dito em outros posts que o numpy mascara automaticamente os valores de NaN no gráfico, mas de alguma forma não está funcionando para mim. Aqui está um código de exemplo

column_labels = list('ABCDEFGH')
row_labels = list('WXYZ')
fig, ax = plt.subplots()
data = np.array([[ 0.96753494,  0.52349944,  0.0254628 ,  0.5104103 ],
         [ 0.07320069,  0.91278731,  0.97094436,  0.70533351],
         [ 0.30162006,  0.49068337,  0.41837729,  0.71139215],
         [ 0.19786101,  0.15882713,  0.59028841,  0.06242765],
         [ 0.51505872,  0.07798389,  0.58790067,  0.44782683],
         [ 0.68975694,  0.53535385,  0.15696023,  0.35641951],
         [ 0.66481995,  0.03576846,  0.9623601 ,  0.96006395],
         [ 0.45865404,  0.50433582,  0.18182575,  0.35126449],])

data[3,:] = np.nan
heatmap = ax.pcolor(data, cmap=plt.cm.seismic)

fig.colorbar(heatmap)
# put the major ticks at the middle of each cell
ax.set_xticks(np.arange(data.shape[1])+0.5, minor=False)
ax.set_yticks(np.arange(data.shape[0])+0.5, minor=False)

# want a more natural, table-like display
ax.invert_yaxis()
ax.xaxis.tick_top()

ax.set_xticklabels(row_labels, minor=False)
ax.set_yticklabels(column_labels, minor=False)
plt.show()

As parcelas parecem

Claramente, isso é muito diferente do enredo sem o Nan, que parece

Quero evitar completamente os valores de NaN da legenda e, de preferência, marcá-lo com algum símbolo, comoX. Como posso conseguir o mesmo?

questionAnswers(1)

yourAnswerToTheQuestion