2014-02-09 4 views
1

Я пытаюсь построить карту тепла с осью x с интервалом времени (с шагом 5 минут), а по оси Y - определенное видео, которое просматривалось в Интернете.Сортировка данных при построении тепловой карты

Все идет хорошо, и данные хороши. Например, набор данных может выглядеть следующим образом:

[[0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
[0.5, 0.0, 0.0, 1.5, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]] 

Это означает, что есть две строки и 22 столбцов (0:00:00 - 1:45:00).

Я использую этот код, чтобы построить Heatmap:

def printheatmap(title,names,data): 
    data = np.array(data) 
    fig, ax = plt.subplots() 
    fig = plt.gcf() 
    fig.set_size_inches(8, 11) 
    heatmap = ax.pcolormesh(data, cmap=plt.cm.Blues, edgecolors='black') 
    ax.set_title(title) 
    ax.set_xticks(np.arange(data.shape[1])+0.5, minor=False) 
    ax.set_yticks(np.arange(data.shape[0])+0.5, minor=False) 
    ax.xaxis.tick_bottom() 
    ax.set_xticklabels(times, minor=False, weight='ultralight', rotation=40, ha='right') 
    ax.set_yticklabels(names, minor=False) 
    ax.grid(False) 
    plt.colorbar(heatmap) 
    plt.show() 

Но по какой-то причине, вторая строка получает график первого в тепловой карте:

enter image description here

Как вы можете видеть, тот, который начинается с (0,5; 0; 0; 1,5), находится в верхней части диаграммы с правильной меткой. Есть ли способ, которым я могу «сохранить» сортировку, которую я делаю вручную?

Ось Y не инвертирована. С большим набором данных, сюжет кажется совершенно случайным образом (но, по-видимому, самые высокие баллы в нижней части), в то время как последняя строка должна быть:

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]. 

enter image description here

Вот еще одна картина. Я отсортированный набор данных по дате, но она просто шифрует его:

enter image description here

EDIT: Фиксированный его. По-видимому, использование пользовательских функций XPath для сортировки ваших данных не очень хорошо работает с matplotlib. Сортировка вручную, казалось, сделала трюк.

ответ

2

список использования нарезки отменить ваши данные:

data = np.array(data[::-1]) 

или инвертировать Y-ось:

ax.invert_yaxis() 
+0

Он не похож на Y-оси перевернутая. С большим набором данных данные становятся еще более скремблированными, и, похоже, он имеет верхний итоговый результат внизу. См. Мой отредактированный пост. –

+0

@MatsWillemsen на самом деле я уверен, что вы подразумеваете под «сортировкой», образцы данных, которые вы показываете, не отсортированы, не так ли? – zhangxaochen

+0

Это, фактически. Он сортируется по дате (не включенной в данные); но я понял это сейчас! См. Выше. –

Смежные вопросы