6

Possible Duplicate:
Is there a way of drawing a caption box in matplotlib

Is it possible to add graph description under graph in pylab?

Let's say that I plot the following graph:

import pylab

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

pylab.plot(x)
pylab.title('My Plot')
pylab.xlabel('My x values')
pylab.ylabel('My y values')

pylab.show()

I also want to insert a few lines that describe the graph, perhaps something like this (not real code):

pylab.description('Figure 1.1 is designed for me to learn basics of Pylab')

Is that possible?

Also, I am vague on differences between pylab and matplotlib, so if there is a solution that works when using matplotlib, it will probably work.

Thank You in Advance

Community
  • 1
  • 1
Akavall
  • 82,592
  • 51
  • 207
  • 251
  • 1
    `pylab` is just a wrapper that imports the necessary parts from `numpy` , `scipy`, and `matplotlib` to make plotting easy. Also see: http://stackoverflow.com/questions/5777576/is-there-a-way-of-drawing-a-caption-box-in-matplotlib – Wilduck Jun 21 '12 at 18:05

1 Answers1

21

figtext is useful for this since it adds text in the figure coordinates, that is, 0 to 1 for x and y, regardless of the axes. Here's an example:

from pylab import *

figure()
gca().set_position((.1, .3, .8, .6)) # to make a bit of room for extra text
plot([1,2], [3,4])
figtext(.95, .9, "This is text on the side of the figure", rotation='vertical')
figtext(.02, .02, "This is text on the bottom of the figure.\nHere I've made extra room for adding more text.\n" + ("blah "*16+"\n")*3)
xlabel("an interesting axis label")    
show()

enter image description here

Here I've used axes.set_position() to make some extra room on the bottom of the figure by making the axes a bit smaller. Here I added room for lots of text and also so the text doesn't bump into the axes label, though it's probably a bit excessive.

Although you asked for text on the bottom, I usually put such labels on the side, so they are more clearly notes and not part of the figure. (I've found it useful, for example, to have a little function that automatically puts the name of the file that generated each figure onto the figure.)

tom10
  • 67,082
  • 10
  • 127
  • 137
  • 1
    Thanks for the answer, but when I try to do it the text at the bottom of the figure overlaps with the xlabel. I tried to play around with `0.02` and `0.02` numbers, but it doesn't help. Do you know whether I can have both the text on the bottom and the xlabel? Text on the side seems quite handy though. – Akavall Jun 21 '12 at 22:28
  • 1
    I've updated my answer to make more room at the bottom of the figure. Here I've specified the extra space manually, and although there are a few ways to manually make the axes smaller to add space for the text, I don't know of a built-in way to do this automatically. – tom10 Jun 22 '12 at 02:42