2013-01-18 12 views
60

this question about heatmaps in matplotlibに基づいて、x軸のタイトルをプロットの先頭に移動したいと考えました。matplotlibのプロットの先頭にx軸を移動

import matplotlib.pyplot as plt 
import numpy as np 
column_labels = list('ABCD') 
row_labels = list('WXYZ') 
data = np.random.rand(4,4) 
fig, ax = plt.subplots() 
heatmap = ax.pcolor(data, cmap=plt.cm.Blues) 

# put the major ticks at the middle of each cell 
ax.set_xticks(np.arange(data.shape[0])+0.5, minor=False) 
ax.set_yticks(np.arange(data.shape[1])+0.5, minor=False) 

# want a more natural, table-like display 
ax.invert_yaxis() 
ax.xaxis.set_label_position('top') # <-- This doesn't work! 

ax.set_xticklabels(row_labels, minor=False) 
ax.set_yticklabels(column_labels, minor=False) 
plt.show() 

しかしながら、(上記のように表記)matplotlib's set_label_positionを呼び出して所望の効果を有するとは思われません。ここに私の出力です:

enter image description here

私が間違って何をしているのですか?あなたはset_ticks_positionはなくset_label_positionたい

答えて

75

使用を

ax.xaxis.tick_top() 

画像の上部に目盛りを配置します。コマンド

ax.set_xlabel('X LABEL')  
ax.xaxis.set_label_position('top') 

は、目盛りではなくラベルに影響します。

import matplotlib.pyplot as plt 
import numpy as np 
column_labels = list('ABCD') 
row_labels = list('WXYZ') 
data = np.random.rand(4, 4) 
fig, ax = plt.subplots() 
heatmap = ax.pcolor(data, cmap=plt.cm.Blues) 

# put the major ticks at the middle of each cell 
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False) 
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False) 

# want a more natural, table-like display 
ax.invert_yaxis() 
ax.xaxis.tick_top() 

ax.set_xticklabels(column_labels, minor=False) 
ax.set_yticklabels(row_labels, minor=False) 
plt.show() 

enter image description here

+0

BとCの間にX軸を入れる方法を教えてもらえますか? 私は一日中成功したが、成功しなかった – DaniPaniz

19

は:

ax.xaxis.set_ticks_position('top') # the rest is the same 

これは私を与える:

enter image description here

+0

BとCの間にX軸を配置する方法を教えてください。 私は一日中成功したが、成功しなかった – DaniPaniz

1

あなたはダニ(ないラベル)がトップとボトム(だけではなく、トップ)上に表示したい場合は、いくつかの余分なマッサージを行うようになってきました。

import matplotlib.pyplot as plt 
import numpy as np 
column_labels = list('ABCD') 
row_labels = list('WXYZ') 
data = np.random.rand(4, 4) 
fig, ax = plt.subplots() 
heatmap = ax.pcolor(data, cmap=plt.cm.Blues) 

# put the major ticks at the middle of each cell 
ax.set_xticks(np.arange(data.shape[1]) + 0.5, minor=False) 
ax.set_yticks(np.arange(data.shape[0]) + 0.5, minor=False) 

# want a more natural, table-like display 
ax.invert_yaxis() 
ax.xaxis.tick_top() 
ax.xaxis.set_ticks_position('both') # THIS IS THE ONLY CHANGE 

ax.set_xticklabels(column_labels, minor=False) 
ax.set_yticklabels(row_labels, minor=False) 
plt.show() 

出力::私はこれを行うことができる唯一の方法は、unutbuのコードに若干の変更である

enter image description here

+0

BとCの間にX軸を入れる方法を教えてもらえますか? 私は一日中成功した – DaniPaniz

8

tick_paramsダニのプロパティを設定するために非常に有用です。

ax.tick_params(labelbottom='off',labeltop='on') 
関連する問題