2016-08-03 2 views
1

Я генерирую 4 карты тепла с использованием подзаговоров и хочу, чтобы инвертировалась ось y. Я использую ax[i].invert_yaxis(), но он, похоже, не работает. Пример кода ниже:y ось тепловой карты не инвертируется в Python

everything = [data_y_axis, data_length, data_roundness, data_y_SDev] 
legend = ['title1', 'title2', 'title3', 'title4'] 

fig, ax = plt.subplots(nrows = 1, ncols = 4, sharex = False, sharey = True, figsize = (13,3)) 

ax = ax.flatten() 

for i, v in enumerate(everything): 

    heatmap = ax[i].pcolor(v, cmap=plt.cm.Blues) 

    ax[i].invert_yaxis() 
    ax[i].xaxis.tick_top() 
    ax[i].set_xticks(np.arange(v.shape[1])+0.5, minor=False) 
    ax[i].set_xticklabels(column_labels, minor=False) 
    ax[i].set_yticks(np.arange(v.shape[0])+0.5, minor=False) 
    ax[i].set_yticklabels(row_labels, minor=False, fontproperties = titlefont) 
    ax[i].set_xticklabels(column_labels, minor=False, fontproperties = titlefont) 

    cb = fig.colorbar(heatmap, orientation='horizontal', pad=0.02, ax = ax[i]) 
    cb.set_label(label = legend[i], fontproperties = titlefont) 
    cb.outline.set_linewidth(2) 

Элементы в everything только np.arrays, все из которых имеют одинаковую форму (4, 6).

В настоящее время он производит такие карты: enter image description here и должен выглядеть примерно так: enter image description here.

Я сделал что-то явно неправильно?

+0

Попробуйте переместить свой 'invert_yaxis' в нижнюю часть объекта set-ticks-axis-stuff-thing. Может быть, 'set_yticks' или другие команды завинчивают вашу инверсию? – pathoren

+0

Просто пошла по тому, что вы предложили, и это все еще не работает. Я боюсь! –

+0

Для наглядности: вы хотите перевернуть DATA, а не yaxis? Возможно, я неправильно понял вас первым – pathoren

ответ

0

Aha. Я решил это. Я удалил ax[i].invert_yaxis() из цикла for и застрял в конце. В настоящее время работает:

for i, v in enumerate(everything): 

    heatmap = ax[i].pcolor(v, cmap=plt.cm.Blues) 

    ax[i].xaxis.tick_top() 
    ax[i].set_xticks(np.arange(v.shape[1])+0.5, minor=False) 
    ax[i].set_xticklabels(column_labels, minor=False) 
    ax[i].set_yticks(np.arange(v.shape[0])+0.5, minor=False) 
    ax[i].set_yticklabels(row_labels, minor=False, fontproperties = titlefont) 
    ax[i].set_xticklabels(column_labels, minor=False, fontproperties = titlefont) 

    cb = fig.colorbar(heatmap, orientation='horizontal', pad=0.02, ax = ax[i]) 
    cb.set_label(label = legend[i], fontproperties = titlefont) 
    cb.outline.set_linewidth(2) 

ax[0].invert_yaxis() 
Смежные вопросы