Leyenda discreta en la trama de mapa de calor naciente

Estoy usando los datos presentes aquí para construir este mapa de calor usando seaborn y pandas.

El archivo csv de entrada está aquí:https://www.dropbox.com/s/5jc1vr6u8j7058v/LUH2_trans_matrix.csv?dl=0

Código:

    import pandas
    import seaborn.apionly as sns

    # Read in csv file
    df_trans = pandas.read_csv('LUH2_trans_matrix.csv')

    sns.set(font_scale=0.8)
    cmap = sns.cubehelix_palette(start=2.8, rot=.1, light=0.9, as_cmap=True)
    cmap.set_under('gray')  # 0 values in activity matrix are shown in gray (inactive transitions)
    df_trans = df_trans.set_index(['Unnamed: 0'])
    ax = sns.heatmap(df_trans, cmap=cmap, linewidths=.5, linecolor='lightgray')

    # X - Y axis labels
    ax.set_ylabel('FROM')
    ax.set_xlabel('TO')

    # Rotate tick labels
    locs, labels = plt.xticks()
    plt.setp(labels, rotation=0)
    locs, labels = plt.yticks()
    plt.setp(labels, rotation=0)

    # revert matplotlib params
    sns.reset_orig()

Como puede ver en el archivo csv, contiene 3 valores discretos: 0, -1 y 1. Quiero una leyenda discreta en lugar de la barra de colores. Etiquetando 0 como A, -1 como B y 1 como C. ¿Cómo puedo hacer eso?

Respuestas a la pregunta(3)

Su respuesta a la pregunta