Managing axis

In this section, some features about axes manipulation will be shown. First, let’s create some data.

import matplotlib.pyplot as plt
import matplotlib as mp
import numpy as np

x = np.linspace(0, 2*np.pi, 30)
y = np.sin(x)

Changing the plot limits

# Setting the limits of the figure
fig = plt.figure() 
ax = plt.gca()
plt.plot(x, y)
plt.xlim(x.min(), x.max())
plt.ylim(y.min(), y.max())

plt.show()
../_images/axes_3_0.png

Changing the ticks and tick labels

Changing the tick locations and tick labels are achieved by using the set_xticks and set_xticklabels methods.

# Tick handling
fig = plt.figure() 
ax = plt.gca()
plt.plot(x, y)

# Defines location of xticks and sets the xticklabels
# $$ stands for mathematical writting
xticks = np.arange(0, 2*np.pi+np.pi/2., np.pi/2)
xticklabels = ["$0$", r"$\frac{\pi}{2}$", "$\pi$", r"$\frac{3\pi}{2}$", '$2\pi$']

# Length of xticks and xticklabels should be the same
ax.set_xticks(xticks)
ax.set_xticklabels(xticklabels, rotation=45, ha='center', fontsize=20)

plt.show()
../_images/axes_5_0.png

Same thing can be done for the y-axis

fig = plt.figure() 
ax = plt.gca()
plt.plot(x, y)

# Defines location of yticks and sets the yticklabels
yticks = np.arange(-1, 1 + 0.25, 0.25)
yticklabels = ['%.1f' %y for y in yticks]

# Length of yticks and yticklabels should be the same
ax.set_yticks(yticks)
ax.set_yticklabels(yticklabels)

plt.show()
../_images/axes_7_0.png

Axis aspect

By defaut, the shape of the axis is set as equal to the shape of the figure. To overcome this, use the axis.axis or the axis.set_aspect method (as shown here.

For instance, a circle may look like an ellipse:

import matplotlib.pyplot as plt
import numpy as np

# Plot circle of radius 3.
an = np.linspace(0, 2 * np.pi, 100)
x = 3 * np.cos(an)
y = 3 * np.sin(an)

The figure display will show the data as an ellipse instead of a circle:

fig = plt.figure()
plt.plot(x, y)
plt.show()
../_images/axes_11_0.png

This can be corrected by using the ax.axis method:

fig = plt.figure()
ax = plt.gca()
plt.plot(x, y)
ax.axis('equal') # must be put before the xlim/ylim
ax.set_xlim(-3, 3)
ax.set_ylim(-3, 3)
plt.show()
../_images/axes_13_0.png

It can be also be achieved by using the set_aspect function, which allows to control whether the axes limits or the axes shape should be modified to insure a proper aspect.

Modifying the data limits:

fig = plt.figure()
ax = plt.gca()
plt.plot(x, y)
ax.set_aspect('equal', 'datalim') # changes the axis limits to have the good aspect
plt.show()
../_images/axes_15_0.png

Modifying the axis shape:

fig = plt.figure()
ax = plt.gca()
plt.plot(x, y)
ax.set_aspect('equal', 'box')  # changes the axes shape to have the good aspect
plt.show()
../_images/axes_17_0.png

Hiding tick labels

Tick labels can be hidden by using the set_visible method:

fig = plt.figure()
ax = plt.gca()
ax.plot(x, y)
ax.axis('equal')
ax.get_xaxis().set_visible(False)  # removes xlabels
ax.get_yaxis().set_visible(False)  # removes xlabels
plt.show()
../_images/axes_19_0.png

Removing axis box

The removal of the axis box is done by calling the axis method with a False argument:

fig = plt.figure()
ax = plt.gca()
ax.set_aspect('equal')
ax.plot(x, y)
ax.axis(False)
plt.show()
../_images/axes_21_0.png