Files
jupyter-collection/scientific-computing-2/auto_examples_jupyter_2/plot_contour.ipynb

90 lines
71 KiB
Plaintext
Raw Normal View History

2025-10-21 11:20:44 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"# Displaying the contours of a function\n",
"\n",
"An example showing how to display the contours of a function with\n",
"matplotlib.\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"def f(x, y):\n",
" return (1 - x / 2 + x**5 + y**3) * np.exp(-(x**2) - y**2)\n",
"\n",
"\n",
"n = 256\n",
"x = np.linspace(-3, 3, n)\n",
"y = np.linspace(-3, 3, n)\n",
"X, Y = np.meshgrid(x, y)\n",
"\n",
"plt.axes((0.025, 0.025, 0.95, 0.95))\n",
"\n",
"plt.contourf(X, Y, f(X, Y), 8, alpha=0.75, cmap=\"hot\")\n",
"C = plt.contour(X, Y, f(X, Y), 8, colors=\"black\", linewidths=0.5)\n",
"plt.clabel(C, inline=1, fontsize=10)\n",
"\n",
"plt.xticks([])\n",
"plt.yticks([])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.12.11"
}
},
"nbformat": 4,
"nbformat_minor": 4
}