2014-02-19 97 views
9

說我有以下設置:圖和軸在matplotlib方法

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(5) 
y = np.exp(x) 
fig1 = plt.figure() 
ax1 = fig1.add_subplot(111) 
ax1.plot(x, y) 

我想一個標題添加到情節(或到副區)。

我想:

> fig1.title('foo') 
AttributeError: 'Figure' object has no attribute 'title' 

> ax1.title('foo') 
TypeError: 'Text' object is not callable 

如何使用面向對象的編程接口matplotlib設置這些屬性?

更一般地說,我可以在哪裏找到matplotlib中類的層次結構及其相應的方法?

回答

22

使用ax1.set_title('foo')代替

ax1.title返回matplotlib.text.Text對象:

In [289]: ax1.set_title('foo') 
Out[289]: <matplotlib.text.Text at 0x939cdb0> 

In [290]: print ax1.title 
Text(0.5,1,'foo') 

您還可以添加一個居中標題圖中,當有多個AxesSubplot

In [152]: fig, ax=plt.subplots(1, 2) 
    ...: fig.suptitle('title of subplots') 
Out[152]: <matplotlib.text.Text at 0x94cf650> 
+0

在我的系統( Ubuntu 13.10,ipython 1.1.0,python 2.7.5,matplotlib 1.2.1)我需要在'ax1.set_title(...)c之後做一個'fig1.show()'所有這一切都會帶來明顯的效果。我的猜測是這是標準行爲。 –

+0

@RoryYorke是的,你需要默認調用show()。 – zhangxaochen

+1

FWIW,'figure'確實有'suptitle'方法,它允許您將一個標題放在多個子圖上。 – physicsmichael