Creating labels where line appears in matplotlib figure

I have a figure created in matplotlib (time-series data) over which are a series of

matplotlib.pyplot.axvline 

lines. I would like to create labels on the plot that appear close to (probably on the RHS of the line and towards the top of the figure) these vertical lines.

3

2 Answers

You can use something like

plt.axvline(10) plt.text(10.1,0,'blah',rotation=90) 

you might have to play around with the x and y value in text to get it to align properly. You can find the more complete documentation here.

2

A solution without manual placement is to use "blended transformations".

Transformations transform coordinates from one coordinate system to another. By specifying a transformation through the transform parameter of text, you can give the x and y coordinates of the text in the axis coordinate system (going from 0 to 1 from left to right/top to bottom of the x/y axes, respectively). With blended transformations, you can used a mixed coordinate system.

This is exactly what you need: you have the x coordinate given by the data and you want to place the text on the y axes somewhere relative to the axis, say in the center. The code to do this looks like this:

import matplotlib.transforms as transforms import matplotlib.pyplot as plt fig, ax = plt.subplots() # the x coords of this transformation are data, and the # y coord are axes trans = ax.get_xaxis_transform() x = 10 ax.axvline(x) plt.text(x, .5, 'hello', transform=trans) plt.show() 
0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like