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

## ···

On Mon, May 17, 2010 at 11:08 AM, hettling <hettling@...3062...> wrote:

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,

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