102 lines
24 KiB
Plaintext
102 lines
24 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"\n",
|
||
"# Bar plots\n",
|
||
"\n",
|
||
"An example of bar plots with matplotlib.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"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",
|
||
"# 生成 12 根柱子\n",
|
||
"n = 12\n",
|
||
"X = np.arange(n)\n",
|
||
"\n",
|
||
"# 随机数发生器\n",
|
||
"rng = np.random.default_rng()\n",
|
||
"\n",
|
||
"# 上半部分:线性递减趋势 × 随机系数 [0.5,1]\n",
|
||
"Y1 = (1 - X / n) * rng.uniform(0.5, 1.0, n)\n",
|
||
"# 下半部分:同样趋势,负向显示\n",
|
||
"Y2 = (1 - X / n) * rng.uniform(0.5, 1.0, n)\n",
|
||
"\n",
|
||
"# 几乎铺满图窗的坐标轴\n",
|
||
"plt.axes((0.025, 0.025, 0.95, 0.95))\n",
|
||
"\n",
|
||
"# 绘制正负双向柱状图\n",
|
||
"plt.bar(X, +Y1, facecolor=\"#9999ff\", edgecolor=\"white\")\n",
|
||
"plt.bar(X, -Y2, facecolor=\"#ff9999\", edgecolor=\"white\")\n",
|
||
"\n",
|
||
"# 在柱顶/柱底标注数值\n",
|
||
"for x, y in zip(X, Y1):\n",
|
||
" plt.text(x, y + 0.05, f\"{y:.2f}\", ha=\"center\", va=\"bottom\")\n",
|
||
"for x, y in zip(X, Y2):\n",
|
||
" plt.text(x, -y - 0.05, f\"{y:.2f}\", ha=\"center\", va=\"top\")\n",
|
||
"\n",
|
||
"# 去坐标轴刻度,留出边距\n",
|
||
"plt.xlim(-0.5, n)\n",
|
||
"plt.xticks([])\n",
|
||
"plt.ylim(-1.25, 1.25)\n",
|
||
"plt.yticks([])\n",
|
||
"\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
|
||
}
|