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

Adding Multiple plots by superimposition

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 Adding Multiple plots by superimposition 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()

### Must Read Python Interview Questions

### 200+ Python Tutorials With Coding Examples

#### Other Python Tutorials

- What is Python?
- Python Advantages
- Python For Beginners
- Python For Machine Learning
- Machine Learning For Beginners
- 130+ Python Projects With Source Code On GitHub