Files
labs/Module-2/7.Matplot/3-Simple-Scatter-Plots.ipynb

215 lines
5.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Simple Scatter Plots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another commonly used plot type is the simple scatter plot, a close cousin of the line plot.\n",
"Instead of points being joined by line segments, here the points are represented individually with a dot, circle, or other shape.\n",
"We’ll start by setting up the notebook for plotting and importing the packages we will use:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"plt.style.use('seaborn-whitegrid')\n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scatter Plots with plt.plot\n",
"\n",
"In the previous chapter we looked at using `plt.plot`/`ax.plot` to produce line plots.\n",
"It turns out that this same function can produce scatter plots as well (see the following figure):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"x = np.linspace(0, 10, 30)\n",
"y = np.sin(x)\n",
"\n",
"plt.plot(x, y, 'o', color='black');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The third argument in the function call is a character that represents the type of symbol used for the plotting. Just as you can specify options such as `'-'` or `'--'` to control the line style, the marker style has its own set of short string codes. The full list of available symbols can be seen in the documentation of `plt.plot`, or in Matplotlib's [online documentation](https://matplotlib.org/stable/api/_as_gen/matplotlib.markers.MarkerStyle.html). Most of the possibilities are fairly intuitive, and a number of the more common ones are demonstrated here (see the following figure):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"rng = np.random.default_rng(0)\n",
"for marker in ['o', '.', ',', 'x', '+', 'v', '^', '<', '>', 's', 'd']:\n",
" plt.plot(rng.random(2), rng.random(2), marker, color='black',\n",
" label=\"marker='{0}'\".format(marker))\n",
"plt.legend(numpoints=1, fontsize=13)\n",
"plt.xlim(0, 1.8);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For even more possibilities, these character codes can be used together with line and color codes to plot points along with a line connecting them (see the following figure):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"plt.plot(x, y, '-ok');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Additional keyword arguments to `plt.plot` specify a wide range of properties of the lines and markers, as you can see in the following figure:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"plt.plot(x, y, '-p', color='gray',\n",
" markersize=15, linewidth=4,\n",
" markerfacecolor='white',\n",
" markeredgecolor='gray',\n",
" markeredgewidth=2)\n",
"plt.ylim(-1.2, 1.2);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"These kinds of options make `plt.plot` the primary workhorse for two-dimensional plots in Matplotlib.\n",
"For a full description of the options available, refer to the [`plt.plot` documentation](https://matplotlib.org/3.5.0/api/_as_gen/matplotlib.pyplot.plot.html)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scatter Plots with plt.scatter\n",
"\n",
"A second, more powerful method of creating scatter plots is the `plt.scatter` function, which can be used very similarly to the `plt.plot` function (see the following figure):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"plt.scatter(x, y, marker='o');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The primary difference of `plt.scatter` from `plt.plot` is that it can be used to create scatter plots where the properties of each individual point (size, face color, edge color, etc.) can be individually controlled or mapped to data.\n",
"\n",
"Let's show this by creating a random scatter plot with points of many colors and sizes.\n",
"In order to better see the overlapping results, we'll also use the `alpha` keyword to adjust the transparency level (see the following figure):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"jupytext": {
"encoding": "# -*- coding: utf-8 -*-",
"formats": "ipynb,md"
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}