{
"cells": [
{
"cell_type": "markdown",
"id": "f8579363",
"metadata": {},
"source": [
"# **Libraries**"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "e4d24b04",
"metadata": {},
"outputs": [],
"source": [
"# libraries\n",
"import scipy \n",
"# \"SciPy\" provides algorithms for optimization, integration, interpolation, eigenvalue problems, \n",
"# algebraic equations, differential equations, statistics and many other classes of problems.\n",
"import numpy as np\n",
"# Fast and versatile, the \"NumPy\" vectorization, indexing, and broadcasting concepts are the \n",
"# de-facto standards of array computing today.\n",
"import matplotlib.pyplot as plt\n",
"# \"Matplotlib\" is a comprehensive library for creating static, animated, and interactive \n",
"# visualizations in Python."
]
},
{
"cell_type": "markdown",
"id": "4c41a20d",
"metadata": {},
"source": [
"## Data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "9e9a38b3",
"metadata": {},
"outputs": [],
"source": [
"x= np.linspace(0,2*np.pi)\n",
"y= np.sin(x)"
]
},
{
"cell_type": "markdown",
"id": "6a8dcbb5",
"metadata": {},
"source": [
"## Anatomy of a figure"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "b5768c9e",
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"from PIL import Image\n",
"img = Image.open('anatomy.webp')\n",
"img.save(\"anatomy.png\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "8f75cee3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# import image module\n",
"from IPython.display import Image\n",
" \n",
"# get the image\n",
"Image(url=\"anatomy.png\", width=500, height=500)"
]
},
{
"cell_type": "markdown",
"id": "82c13c31",
"metadata": {},
"source": [
"## Implicit or explicit?\n",
"**Using figures**\n",
"- Explicitly create Figures and Axes, and call methods on them (the \"object-oriented (OO) style\").\n",
"- Rely on pyplot to implicitly create and manage the Figures and Axes, and use pyplot functions for plotting."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "0f84f0db",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"