PColormesh único com mais de um mapa de cores usando o Matplotlib

Estou criando uma GUI em que existem dados em tempo real para vários registros ("coisas") e campos. os registros são comparáveis com base no campo, mas os campos não são necessariamente relacionados (pelo menos não na mesma escala). Para minha eventual GUI, quero que a página principal seja um mapa de calor (na verdade, um monte de mapas de calor 1-D com base em colunas (campos)); se você clicar em um, ele fornecerá um histórico de séries temporais e alguns outros gráficos.

Enfim, o que eu estou procurando aqui, está tentando obter o mapa de calor inicial para mostrar da maneira que eu quero. A partir de agora, eu posso fazer com que o pcolormesh do Matplotlib mostre essencialmente mapas de calor 1-D individuais com base no campo, hackeando-o e com o mapa de calor com base no percentil da coluna e adicionando texto do valor real na parte superior.

Mas, como eu disse, os campos não estão necessariamente relacionados e eu gostaria de poder ter mapas de cores individuais para cada campo. Por exemplo: digamos que os campos 3 e 4 estão qualitativamente relacionados um ao outro, mas não aos campos 0-3 - seria bom ter aqueles mapeados para dizer a malha de cores 'verdes' em vez de 'calor frio'.

Aqui está o meu código até agora e o pcolormesh / heatmap resultante:

import pandas as pd
import matplotlib.pyplot as plt

def DFPercentiles(df,bycols=True):
    p=pd.DataFrame(index=df.index,columns=df.columns)
    if bycols!=True:
        for j in df.index:
            for i in df.columns:
                p.loc[j,i]=(df.loc[j,i]-min(df.loc[j,:]))/(max(df.loc[j,:])-min(df.loc[j,:]))
    else:
        for i in df.index:
            for j in df.columns:
                p.loc[i,j]=(df.loc[i,j]-min(df.loc[:,j]))/(max(df.loc[:,j])-min(df.loc[:,j]))
    return p

def Heatmap(df,figsize='auto'):
    if figsize=='auto':
        figsize=[shape(df)[1],shape(df)[0]/2]
    fig=figure(figsize=figsize)
    pdf=array(DFPercentiles(df,bycols=True)).astype(float)[::-1]
    plt.pcolormesh(pdf,cmap=cm.coolwarm,alpha=0.8)
    plt.yticks(arange(0.5,len(df)),df.index[::-1])
    plt.xticks(arange(0.5,len(df.columns)),df.columns)
    for y in range(df.shape[0]):
        for x in range(df.shape[1]):
            plt.text(x + 0.5, y + 0.5, '%.3f' % df[::-1].iloc[y, x],
                     horizontalalignment='center',
                     verticalalignment='center',
                     )
    return plt

hmap=Heatmap(mydf)
hmap.show()

E o resultado:

Não tive sorte em tentar obter vários mapas de cores para campos separados.

questionAnswers(2)

yourAnswerToTheQuestion