£199.99 £139.99 for one year of Unlimited learning. Offer ends on 14 November 2022 at 23:59 (UTC). T&Cs apply

Find out more
Scatter plots in Matplotlib
Skip main navigation

Scatter plots in Matplotlib

Learn about Scatter plots in Matplotlib

Scatter plots are drawn with the Axes.scatter method. Similar to the plot method, they take at least two arguments, the x- and y-positions of the data points, as lists, arrays, or DataFrames.

In this course, we will be using various data sets and one of them is the Iris data set, which will be of the petal length versus the petal width to demonstrate the scatter plot. Download the zip file at once and save the individual CSV files with the same name under the same folder where your notebook lives. Let us use the iris.csv for this activity.

Download: Iris.csv

Alternatively, you can also access the file from the Github source. [1]

Step 1

This time you will import Pandas library for working on our scatter plot and the Iris.csv file along with setting the figures and axes for the chart.

Code:

import pandas as pd

iris_data = pd.read_csv(iris.csv)
versicolor = iris_data[iris_data.variety == Versicolor]
setosa = iris_data[iris_data.variety == Setosa]
virginica = iris_data[iris_data.variety == Virginica]

fig, ax = plt.subplots()
fig.set_size_inches(8, 8)

Step 2

Next, you will just draw the Versicolor data.

Code:

points = ax.scatter(versicolor[petal.length], versicolor[petal.width], label=Versicolor)

Output:

Screenshot of a scatter plot chart on matplotlib that shows output of the Iris petals dataset. X-axis from left to right reads: 3.0, 3.5, 4.0, 4.5, 5.0. Y-axis from top to bottom reads: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8. The scatter plot dots are blue.Click to enlarge

Step 3

The return value is a collection of the points that were plotted, and we can then use that reference to make changes to the way points are displayed. For example, we can change the colour of the plots.

Code:

points.set_facecolor(green)

Output:

Screenshot of a scatter plot chart on matplotlib that shows output of the Iris petals dataset. X-axis from left to right reads: 3.0, 3.5, 4.0, 4.5, 5.0. Y-axis from top to bottom reads: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8. The scatter plot dots are green.Click to enlarge

Isn’t that amazing? Similarly, you can even set attributes when the points are drawn. For example, try setting the colours and marker style on the other points.

Code:

ax.scatter(setosa[petal.length], setosa[petal.width], label=Setosa, marker=x, facecolor=blue)
ax.scatter(virginica[petal.length], virginica[petal.width], label=Virginica, marker=s, facecolor=red)

A marker style of x sets the marker to a cross, while s means square.

Output:

Screenshot of a scatter plot chart on matplotlib that shows output of the Iris petals dataset. X-axis from left to right reads: “Petal Length(cm)”. 1, 2, 3, 4, 5, 6, 7. Y-axis from top to bottom reads: “Petal Width(cm)”. 0.0, 0.5, 1.0, 1.5, 2.0, 2.5. The dataset has three different colours/markers The is a mixture of X’s, circles, and boxes are scattered on the chart. Click to enlarge

As with other types of plots, we can set the title and axis labels, then add a legend (using the same methods we’ve already seen).

Code:

ax.set_xlabel(Petal Length (cm))
ax.set_ylabel(Petal Width (cm))
ax.set_title(Iris Petal Sizes)
ax.legend()

Output:

Screenshot of a scatter plot chart on matplotlib that shows output of the Iris petals dataset. X-axis from left to right reads: “Petal Length(cm)”. 1, 2, 3, 4, 5, 6, 7. Y-axis from top to bottom reads: “Petal Width(cm)”. 0.0, 0.5, 1.0, 1.5, 2.0, 2.5. The dataset has three different colours/markers with a legend. Red Box = “Virginica”. Blue X = “Setosa”. Green Circle = “Versicolour”. The X’s, circles, and boxes are scattered on the chart. Click to enlarge

You could also continue customising the plot by adjusting the axes scales and tick marks using the same functions we’ve seen for other plot types. The complete documentation for the scatter method can be found in the link. Read through this documentation to improve your understanding of scatter plots.

Refer to: Scatter plot documentation [2]

After creating all these wonderful plots, how do I save them?

You will learn that along with automating the plot generation with Python scripts in the subsequent step.

References

  1. Github dataset [Internet]. Github; [date unknown]. Available from: https://github.com/mwaskom/seaborn-data

  2. matplotlib.axes.Axes.scatter [Document]. Matplotlib; [date unknown]. Available from: https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.axes.Axes.scatter.html

This article is from the free online

Data Visualisation with Python: Matplotlib and Visual Analysis

Created by
FutureLearn - Learning For Life

Our purpose is to transform access to education.

We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.

We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.

Learn more about how FutureLearn is transforming access to education