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
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 pltfig = 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
> matplotlib-users List Signup and Options
>