# Plotting with Matplotlib

Plotting with Matplotlib

Matplotlib (https://matplotlib.org/) is a library for 2D plotting based on NumPy. Here are some basic examples. More examples can be found in the oﬃcial documentation (https://matplotlib.org/2.0.2/gallery.html and https://matplotlib.org/2.0.2/examples/index.html)

## Plotting with Matplotlib: Plots with Common X-axis but di erent Y-axis :Using twinx()

In this example, we will plot a sine curve and a hyperbolic sine curve in the same plot with a common x-axis having diﬀerent y-axis. This is accomplished by the use of twinx() command.

Plotting tutorials in Python
Adding Multiple plots by twin x axis
Good for plots having different y axis range
Separate axes and figure objects
replicate axes object and plot curves
use axes to set attributes
Note:
Grid for second curve unsuccessful : let me know if you find it! :(
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2.0*np.pi, 101)
y = np.sin(x)
z = np.sinh(x)
separate the figure object and axes object
from the plotting object
fig, ax1 = plt.subplots()
Duplicate the axes with a different y axis
and the same x axis
ax2 = ax1.twinx() # ax2 and ax1 will have common x axis and different y axis
plot the curves on axes 1, and 2, and get the curve handles curve1, = ax1.plot(x, y, label="sin", color='r')
curve2, = ax2.plot(x, z, label="sinh", color='b')
Make a curves list to access the parameters in the curves curves = [curve1, curve2]
add legend via axes 1 or axes 2 object.
one command is usually sufficient
ax1.legend() # will not display the legend of ax2
ax2.legend() # will not display the legend of ax1 ax1.legend(curves, [curve.get_label() for curve in curves])
ax2.legend(curves, [curve.get_label() for curve in curves]) # also valid
Global figure properties
plt.title("Plot of sine and hyperbolic sine")
plt.show()

## Plotting with Matplotlib: Plots with common Y-axis and di erent X-axis using twiny()

In this example, a plot with curves having common y-axis but diﬀerent x-axis is demonstrated using twiny() method. Also, some additional features such as the title, legend, labels, grids, axis ticks and colours are added to the plot.

Plotting tutorials in Python
Adding Multiple plots by twin y axis
Good for plots having different x axis range
Separate axes and figure objects
replicate axes object and plot curves
use axes to set attributes
import numpy as np
import matplotlib.pyplot as plt
y = np.linspace(0, 2.0*np.pi, 101)
x1 = np.sin(y)
x2 = np.sinh(y)
values for making ticks in x and y axis ynumbers = np.linspace(0, 7, 15) xnumbers1 = np.linspace(-1, 1, 11) xnumbers2 = np.linspace(0, 300, 7)
separate the figure object and axes object
from the plotting object
fig, ax1 = plt.subplots()
Duplicate the axes with a different x axis
and the same y axis
ax2 = ax1.twiny() # ax2 and ax1 will have common y axis and different x axis
plot the curves on axes 1, and 2, and get the axes handles curve1, = ax1.plot(x1, y, label="sin", color='r') curve2, = ax2.plot(x2, y, label="sinh", color='b')
Make a curves list to access the parameters in the curves curves = [curve1, curve2]
add legend via axes 1 or axes 2 object.
one command is usually sufficient
ax1.legend() # will not display the legend of ax2
ax2.legend() # will not display the legend of ax1
ax1.legend(curves, [curve.get_label() for curve in curves]) ax2.legend(curves, [curve.get_label() for curve in curves]) # also valid
x axis labels via the axes
ax1.set_xlabel("Magnitude", color=curve1.get_color())
ax2.set_xlabel("Magnitude", color=curve2.get_color())

## y axis label via the axes

ax1.set_ylabel("Angle/Value", color=curve1.get_color())
ax2.set_ylabel("Magnitude", color=curve2.get_color()) # does not work
ax2 has no property control over y axis
y ticks - make them coloured as well
ax1.tick_params(axis='y', colors=curve1.get_color())
ax2.tick_params(axis='y', colors=curve2.get_color()) # does not work
ax2 has no property control over y axis
x axis ticks via the axes
ax1.tick_params(axis='x', colors=curve1.get_color())
ax2.tick_params(axis='x', colors=curve2.get_color())

## set x ticks

ax1.set_xticks(xnumbers1)
ax2.set_xticks(xnumbers2)

## set y ticks

ax1.set_yticks(ynumbers)
ax2.set_yticks(ynumbers) # also works
Grids via axes 1 # use this if axes 1 is used to
define the properties of common x axis
ax1.grid(color=curve1.get_color())
To make grids using axes 2
ax1.grid(color=curve2.get_color())
ax2.grid(color=curve2.get_color())
ax1.xaxis.grid(False)

## Global figure properties

plt.title(“Plot of sine and hyperbolic sine”)
plt.show()

## Plotting with Matplotlib: A Simple Plot in Matplotlib

This example illustrates how to create a simple sine curve using Matplotlib

Plotting tutorials in Python
Launching a simple plot
import numpy as np
import matplotlib.pyplot as plt
angle varying between 0 and 2pi x = np.linspace(0, 2.0np.pi, 101)
y = np.sin(x) # sine function
plt.plot(x, y)
plt.show()

## Adding more features to a simple plot : axis labels, title, axis ticks, grid, and legend

In this example, we take a sine curve plot and add more features to it; namely the title, axis labels, title, axis ticks, grid and legend.

Plotting tutorials in Python
Enhancing a plot
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2.0*np.pi, 101)
y = np.sin(x)
values for making ticks in x and y axis xnumbers = np.linspace(0, 7, 15) ynumbers = np.linspace(-1, 1, 11)
plt.plot(x, y, color='r', label='sin') # r - red colour plt.xlabel("Angle in Radians") plt.ylabel("Magnitude")
plt.title("Plot of some trigonometric functions")
plt.xticks(xnumbers)
plt.yticks(ynumbers)
plt.legend()
plt.grid()
plt.axis([0, 6.5, -1.1, 1.1]) # [xstart, xend, ystart, yend] plt.show()

## Making multiple plots in the same figure by superimposition similar to MATLAB

In this example, a sine curve and a cosine curve are plotted in the same figure by superimposing the plots on top of each other.

Plotting tutorials in Python
Good for plots sharing similar x, y limits
Using single plot command and legend
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2.0*np.pi, 101)
y = np.sin(x)
z = np.cos(x)
values for making ticks in x and y axis xnumbers = np.linspace(0, 7, 15) ynumbers = np.linspace(-1, 1, 11)
plt.plot(x, y, 'r', x, z, 'g') # r, g - red, green colour plt.xlabel("Angle in Radians") plt.ylabel("Magnitude")
plt.title("Plot of some trigonometric functions")
plt.xticks(xnumbers)
plt.yticks(ynumbers)
plt.legend(['sine', 'cosine'])
plt.grid()
plt.axis([0, 6.5, -1.1, 1.1]) # [xstart, xend, ystart, yend] plt.show()

## Making multiple Plots in the same figure using plot superimposition with separate plot commands

Similar to the previous example, here, a sine and a cosine curve are plotted on the same figure using separate plot commands. This is more Pythonic and can be used to get separate handles for each plot.

Plotting tutorials in Python
Good for plots sharing similar x, y limits
Using multiple plot commands
Much better and preferred than previous
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2.0*np.pi, 101)
y = np.sin(x)
z = np.cos(x)
values for making ticks in x and y axis xnumbers = np.linspace(0, 7, 15) ynumbers = np.linspace(-1, 1, 11)
plt.plot(x, y, color='r', label='sin') # r - red colour plt.plot(x, z, color='g', label='cos') # g - green colour plt.xlabel("Angle in Radians") plt.ylabel("Magnitude")
plt.title("Plot of some trigonometric functions")
plt.xticks(xnumbers)
plt.yticks(ynumbers)
plt.legend()
plt.grid()
plt.axis([0, 6.5, -1.1, 1.1]) # [xstart, xend, ystart, yend] plt.show()