Skip to content

Commit

Permalink
sync matplotlib
Browse files Browse the repository at this point in the history
  • Loading branch information
zingale committed May 13, 2024
1 parent 00c64f9 commit 5351f83
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 500 deletions.
52 changes: 1 addition & 51 deletions content/04-python-matplotlib/matplotlib-basics.ipynb

Large diffs are not rendered by default.

114 changes: 80 additions & 34 deletions content/04-python-matplotlib/matplotlib-exercises.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"%matplotlib inline"
"import numpy as np"
]
},
{
Expand Down Expand Up @@ -85,7 +84,9 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"tags": []
},
"outputs": [],
"source": []
},
Expand All @@ -97,13 +98,9 @@
"\n",
"For an angle $\\theta$ in the range $\\theta \\in [0, 2\\pi]$, the polar equations of a circle of radius $R$ are:\n",
"\n",
"$$\n",
"x = R\\cos(\\theta)\n",
"$$\n",
"$$x = R\\cos(\\theta)$$\n",
"\n",
"$$ \n",
"y = R\\sin(\\theta)\n",
"$$\n",
"$$y = R\\sin(\\theta)$$\n",
"\n",
"We want to draw a circle. \n",
"\n",
Expand All @@ -117,7 +114,9 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"tags": []
},
"outputs": [],
"source": []
},
Expand All @@ -139,7 +138,9 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"tags": []
},
"outputs": [],
"source": []
},
Expand All @@ -166,7 +167,9 @@
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"tags": []
},
"outputs": [],
"source": []
},
Expand All @@ -176,7 +179,7 @@
"source": [
"## Q5: subplots\n",
"\n",
"matplotlib has a number of ways to create multiple axes in a figure -- look at `plt.subplot()` (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot)\n",
"matplotlib has a number of ways to create multiple axes in a figure -- look at `plt.subplots()` (http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot)\n",
"\n",
"Create an `x` array using NumPy with a number of points, spanning from $[0, 2\\pi]$. \n",
"\n",
Expand All @@ -185,62 +188,105 @@
"* Define a new numpy array `f` initialized to a function of your choice.\n",
"* Plot f in the top axes\n",
"* Compute a numerical derivative of `f`,\n",
"\n",
" $$ f' = \\frac{f_{i+1} - f_i}{\\Delta x}$$\n",
"\n",
"and plot this in the middle axes\n",
" and plot this in the middle axes\n",
"* Do this again, this time on $f'$ to compute the second derivative and plot that in the bottom axes\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"metadata": {
"tags": []
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Q6: frequent words plotting\n",
"## Q6: Mandelbrot set\n",
"\n",
"The [Mandelbrot set](https://en.wikipedia.org/wiki/Mandelbrot_set) is defined such that $z_{k+1} = z_k^2 + c$\n",
"remains bounded, which is usually taken as $|z_{k+1}| \\le 2$\n",
"where $c$ is a complex number and we start with $z_0 = 0$\n",
"\n",
"We want to consider a range of $c$, as complex numbers $c = x + iy$,\n",
"where $-2 < x < 2$ and $-2 < y < 2$.\n",
"\n",
"In this exercise, we will read the file with the transcription of _Star Trek TOS, Shore Leave_ and calculate the amount of time each word was found. We will then plot the 25 most frequent words and label the plot.\n",
"For each $c$, identify its position on a Cartesian grid as $(x,y)$ and \n",
"assign a value $N$ that is the number of iterations, $k$, required for $|z_{k+1}|$ to become greater than $2$.\n",
"\n",
"### 6.1 Read the file and create the dictionaty {'word':count}\n",
"The plot of this function is called the Mandelbrot set.\n",
"\n",
" * Open the `shore_leave.txt`\n",
" * Create the dictionary of the form {'word':count}, where `count` shows the amount of times the word was found in the text. Remember to get rid of the punctuation (\".\" and \",\") and to ensure that all words are lowercase"
"Here's a simple implementation that just does a fixed number of iterations and then colors points in Z depending on whether they satisfy $|z| \\le 2$. \n",
"\n",
"Your task is to extend this to record the number of iterations it takes for each point in the Z-plane to violate that constraint,\n",
"and then plot that data -- it will show more structure\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"f = open(\"shore_leave.txt\", \"r\")\n",
"N = 256\n",
"x = np.linspace(-2, 2, N)\n",
"y = np.linspace(-2, 2, N)\n",
"\n",
"for line in f:\n",
" pass"
"xv, yv = np.meshgrid(x, y, indexing=\"ij\")"
]
},
{
"cell_type": "markdown",
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"### 2. Plot 25 most frequent words\n",
"c = xv + 1j*y\n",
"\n",
"z = np.zeros((N, N), dtype=np.complex128)\n",
"\n",
"Plot a labelled bar chart of the most frequent 25 words with their frequencies."
"for i in range(10):\n",
" z = z**2 + c\n",
" \n",
"m = np.ones((N, N))\n",
"m[np.abs(z) <= 2] = 0.0"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 10,
"metadata": {},
"outputs": [],
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fd9934ba0e0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# your code here"
"fig, ax = plt.subplots()\n",
"ax.imshow(m)"
]
},
{
Expand All @@ -253,7 +299,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -267,7 +313,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
"version": "3.12.3"
}
},
"nbformat": 4,
Expand Down

0 comments on commit 5351f83

Please sign in to comment.