2014-02-19 3 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) Мне нужно сделать «fig1.show()» после «ax1.set_title (...) c все для того, чтобы оно стало видимым. Я предполагаю, что это стандартное поведение. –

+0

@RoryYorke yep, вам нужно вызвать show() по умолчанию. – zhangxaochen

+1

FWIW, 'figure' имеет метод' suptitle', который позволяет поместить один заголовок в несколько подзаговоров. – physicsmichael

Смежные вопросы