Matplotlib Offset Copy

PythonPythonBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

In this lab, we will learn how to use transforms.offset_copy to position a drawing element, such as a text string, at a specified offset in screen coordinates relative to a location given in any coordinates. We will use the Matplotlib library in Python to create a scatter plot and a polar plot, and then add text to each plot using offset_copy.

VM Tips

After the VM startup is done, click the top left corner to switch to the Notebook tab to access Jupyter Notebook for practice.

Sometimes, you may need to wait a few seconds for Jupyter Notebook to finish loading. The validation of operations cannot be automated because of limitations in Jupyter Notebook.

If you face issues during learning, feel free to ask Labby. Provide feedback after the session, and we will promptly resolve the problem for you.

Import Libraries

We will start by importing the necessary libraries: numpy and matplotlib.pyplot.

import numpy as np
import matplotlib.pyplot as plt

Create Data

Next, we will create some data to use in our plots. We will use numpy to create two arrays, xs and ys, that we will use as the x and y coordinates for our scatter plot.

xs = np.arange(7)
ys = xs**2

Create a Scatter Plot

We will now create a scatter plot using the plot function from matplotlib.pyplot.

fig = plt.figure(figsize=(5, 10))
ax = plt.subplot(2, 1, 1)

## Plot the data
for x, y in zip(xs, ys):
    plt.plot(x, y, 'ro')

Add Text to the Scatter Plot

Now we will add text to our scatter plot using offset_copy. We will first create a transform that positions the text at a specified offset in screen coordinates relative to a location given in any coordinates. Then, we will use the text function from matplotlib.pyplot to add the text to the plot.

## Create the transform
trans_offset = mtransforms.offset_copy(ax.transData, fig=fig,
                                       x=0.05, y=0.10, units='inches')

## Add text to the plot
for x, y in zip(xs, ys):
    plt.text(x, y, '%d, %d' % (int(x), int(y)), transform=trans_offset)

Create a Polar Plot

We will now create a polar plot using the polar function from matplotlib.pyplot.

ax = plt.subplot(2, 1, 2, projection='polar')

## Plot the data
for x, y in zip(xs, ys):
    plt.polar(x, y, 'ro')

Add Text to the Polar Plot

Finally, we will add text to our polar plot using offset_copy and the text function from matplotlib.pyplot.

## Create the transform
trans_offset = mtransforms.offset_copy(ax.transData, fig=fig,
                                       y=6, units='dots')

## Add text to the plot
for x, y in zip(xs, ys):
    plt.text(x, y, '%d, %d' % (int(x), int(y)),
             transform=trans_offset,
             horizontalalignment='center',
             verticalalignment='bottom')

Summary

In this lab, we learned how to use transforms.offset_copy to position a drawing element at a specified offset in screen coordinates relative to a location given in any coordinates. We used this function to add text to a scatter plot and a polar plot created using the matplotlib.pyplot library in Python.

Other Python Tutorials you may like