11

I would like to do this :

I have this python code :

import numpy as np
import pylab as plt

a = np.array([1,2,3,4,5,6,7,8,9,10])
b = np.array([7,8,6,3,2,1,5,8,4,15])
c = plt.plot(a,b,'.')
d = 5
plt.text(2,3, "d = "+d) #This line is the problem because i have not the value of d !
plt.show()

So actually I just want to display the value of d and also I want to display the value of d but relatively for instance at the bottom right but not with some coordinates. Is it possible to do this with Python ?

2 Answers 2

13

You can use the transform argument to place in relative coordinates from 0.0 to 1.0 for example

plt.text(0.5,
         0.67,
         "d = {}".format(d),
         transform=plt.gca().transAxes)

In this local system (0, 0) is the lower-left and (1, 1) is the upper-right of the plot. Here is a good reference for placing and rotating text at various locations on the plot.

Sign up to request clarification or add additional context in comments.

Comments

9

text

You can use text to place a text in the figure. By default, the coordinates are data coordinates, but you can specify a transform to switch e.g. to axes coordinates.

plt.text(.96,.94,"d={}".format(d), bbox={'facecolor':'w','pad':5},
         ha="right", va="top", transform=plt.gca().transAxes )

annotate

You can use annotate to produce a text somewhere in the figure. The advantage compared to text is that you may (a) use an additional arrow to point to an object, and (b) that you may specify the coordinate system in terms of a simple string, instead of a transform.

plt.annotate("d={}".format(d), xy=(p, 15), xytext=(.96,.94), 
            xycoords="data", textcoords="axes fraction",
            bbox={'facecolor':'w','pad':5}, ha="right", va="top")

AnchoredText

You can use an AnchoredText from offsetbox:

from matplotlib.offsetbox import AnchoredText
a = AnchoredText("d={}".format(d), loc=1, pad=0.4, borderpad=0.5)
plt.gca().add_artist(a)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.