2016-08-03 3 views
1

하위 플롯을 사용하여 4 개의 히트 맵을 생성하고 y 축을 반전 시키길 원합니다. 내가 ax[i].invert_yaxis()을 사용하고 있지만 작동하지 않는 것 같습니다. 코드의 예는 아래와 같다 : everything히트 맵의 y 축이 파이썬에서 반전되지 않습니다.

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) 

항목은 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

명확성을 위해 : yaxis가 아닌 DATA를 반전하고 싶습니까? 아마 내가 처음으로 오해했을 수도 있습니다. – pathoren

답변

0

아하. 나는 그것을 해결했다. for 루프 내에서 ax[i].invert_yaxis()을 삭제하고 끝에 붙였습니다. 이제 작동합니다 :

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() 
관련 문제