2014-01-17 157 views
4

我目前在python中使用matplotlib來繪製一些數據,但是我想讓圖形的標題位於Y軸上,因爲沒有足夠的空間用於標題一個圖形和另一個的x軸標籤。我知道我可以將hspace設置爲更大的數字,但是,我不想這樣做,因爲我計劃將多個圖表堆疊在一起,如果我調整hspace,那麼圖形將會真的短而難以閱讀。 like this http://oi39.tinypic.com/2a4r5i1.jpgPython-Matplotlib將圖形標題移動到y軸

這裏是我的代碼

#EXAMPLE CODE 
import numpy as np 
import matplotlib.pyplot as plt 


fig=plt.figure() 
rect = fig.patch 
rect.set_facecolor('#31312e') 

x = [1,2,3,4,5,6,7,8] 
y = [4,3,8,2,8,0,3,2] 
z = [2,3,0,8,2,8,3,4] 


ax1 = fig.add_subplot(2,1,1, axisbg='gray') 
ax1.plot(x, y, 'c', linewidth=3.3) 
ax1.set_title('title', color='c') 
ax1.set_xlabel('xlabel') 
ax1.set_ylabel('ylabel') 

ax2 = fig.add_subplot(2,1,2, axisbg='gray') 
ax2.plot(x, z, 'c', linewidth=3.3) 
ax2.set_xlabel('xlabel') 
ax2.set_ylabel('ylabel') 



plt.show() 

在此先感謝

+1

一般性意見:最好將代碼修剪到最小的例子。看到我的迴應是對此的示範。 –

+0

@PaulH謝謝,我修剪了一下 – JVarhol

回答

6

試試這個:

ax1.set_title('title1', color='c', rotation='vertical',x=-0.1,y=0.5) 
ax2.set_title('title2', color='c', rotation='vertical',x=-0.1,y=0.5) 
+0

謝謝@xndrme我發現這非常有用,而且我非常欣賞這一事實,即我不需要添加任何代碼行。 – JVarhol

3

在matplotlib圖中的所有文本元素都get_positionset_position方法。如果捕獲座標軸標籤並使用它們來設置標題的座標加上一點偏移量,這很簡單。 (編輯:所述COORDS是在圖中的寬度和高度的分數的單位即(0,0)是左下coorner和(1,1)是右上角。)

fig, axes = plt.subplots(nrows=2) 
ax0label = axes[0].set_ylabel('Axes 0') 
ax1label = axes[1].set_ylabel('Axes 1') 

title = axes[0].set_title('Title') 

offset = np.array([-0.15, 0.0]) 
title.set_position(ax0label.get_position() + offset) 
title.set_rotation(90) 

fig.tight_layout() 

enter image description here