для красивого (хорошо, это просто пример!) результата:

даю графический интерфейс, в котором есть живые данные «по времени» для нескольких записей («вещей») и полей. записи сравнимы по полям, но поля не обязательно связаны (по крайней мере, в том же масштабе). Для моего возможного графического интерфейса я хочу, чтобы главной страницей была тепловая карта (на самом деле это набор 1-D тепловых карт, основанных на столбцах (полях), тогда, если вы нажмете одну из них, она даст историю временных рядов и некоторые другие диаграммы.

Во всяком случае, то, что я преследую здесь, пытается получить начальную тепловую карту, чтобы показать, как я хочу. На данный момент я могу получить pcolormesh от Matplotlib, чтобы по существу показать отдельные 1-D тепловые карты, основанные на поле, взломав его и тепловое отображение, основанное на процентиле столбца, а затем добавив текст фактического значения сверху.

Но, как я уже сказал, поля не обязательно связаны между собой, и я хотел бы иметь возможность иметь отдельные цветовые карты для каждого поля. Например: скажем, поля 3 и 4 качественно связаны друг с другом, но не с полями 0-3 - так что было бы неплохо, чтобы те, кто отображен, могли сказать «зелёная» цветовая сетка, а не «прохладный теплый».

Вот мой код и полученный pcolormesh / heatmap:

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()

И результат:

Мне не повезло, пытаясь получить несколько цветовых карт для отдельных полей.

Ответы на вопрос(2)

Ваш ответ на вопрос