align title of subplot with ylabel

Thanks for the suggestions, 'annotate' is what I need, I think.
I get errors though, also when I run the example scripts
from here:
http://matplotlib.sourceforge.net/trunk-docs/users/annotations_guide.html#using-complex-coordinate-with-annotation .

I get the error 'NoneType' object is not iterable when I try plt.show()
or try to save to eps.

So I am not sure if I have the correct version of matplotlib installed.
I checked out the newest matplotlib from the svn repository, removed my
current installed version and installed the version in the 'trunk/'
directory. 'annotate' did not work.
Later, I installed matplotlib from the '/branches/v0_99_maint'
directory.
In both cases there were no errors in the installation, but still
'annotate' did not work.

Could it be that I have the wrong library from the svn repository
installed? Does r8319 mean release #8319?

Kind Regards

Hannes

This can be done relatively easily with the current svn version of
matplotlib (r8319).
Below is the modified version of your code.

See

http://matplotlib.sourceforge.net/trunk-docs/users/annotations_guide.html#using-complex-coordinate-with-annotation

for how the annotation works.

While this is certainly possible with the released version, but it
will require you to write a few tens of lines of code. Basically, you
need create a custom Text class that update its position during the
drawing time.

Regards,

-JJ

###Code
import scipy
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(121)
plt.plot(scipy.sin(scipy.arange(1,100, 0.001)))
plt.xlabel('xlabel')
yl = plt.ylabel("ylabel")

plt.annotate("A", (0,1.), xycoords=(yl, "axes fraction"),
             xytext=(0, 14), textcoords="offset points",
             fontsize=14)

ax = fig.add_subplot(122)
plt.plot(scipy.cos(scipy.arange(1,100, 0.001)))
plt.xlabel('xlabel')

my_ticklabel = ax.get_yticklabels()[-2]
# Note that there is no guarantee that all ticklabels are drawn.
plt.annotate("B", (0,1.), xycoords=(my_ticklabel, "axes fraction"),
             xytext=(0, 14), textcoords="offset points",
             fontsize=14)

###End Code

> Dear all,
>
> I'm struggling with the following problem plotting my data:
>
> I have a figure with two panels next to each other, which I want to
> label 'A' and 'B'. I want to left-justify my panel labels, but not

to

> the box that contains the plot, but to the y-axis label. I played

around

> with 'text()' and 'title()', but did not find a good solution except

for

> giving the coordinates manually to 'text()'. This would be very
> inconvenient though, because I have many different plots on

different

> scales.
> Here is what I tried:
>
> ###Code
> import scipy
> import matplotlib.pyplot as plt
>
> fig = plt.figure()
> ax = fig.add_subplot(121)
> plt.plot(scipy.sin(scipy.arange(1,100, 0.001)))
> plt.xlabel('xlabel')
> plt.ylabel("ylabel")
> plt.text(0,1,"A", fontsize=14, transform=ax.transAxes)
>
> ax = fig.add_subplot(122)
> plt.plot(scipy.cos(scipy.arange(1,100, 0.001)))
> plt.text(0,1,"B", fontsize=14, transform=ax.transAxes)
> plt.xlabel('xlabel')
> ###End Code
>
> So the texts 'A' and 'B' should be a little bit higher and more to

the

> left. The 'A' I want to align with the y-axis label of the left

plot,

···

On Tue, 2010-05-18 at 13:34 -0400, Jae-Joon Lee wrote:

On Mon, May 17, 2010 at 11:08 AM, hettling <hettling@...3062...> wrote:
> the 'B' with the values of the y-axis of the right plot.
>
> I hope my question is clear, I will appreciate any help!
>
> Thanks in advance,
>
> Hannes
>
>
>

------------------------------------------------------------------------------

>
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>