Skip to content

Instantly share code, notes, and snippets.

@standarddeviant
Created June 3, 2022 00:17
Show Gist options
  • Save standarddeviant/bf502ac6e25997e35e7a6506c409e683 to your computer and use it in GitHub Desktop.
Save standarddeviant/bf502ac6e25997e35e7a6506c409e683 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "e65decee-8b8f-4561-9f4f-e0d6a83fd028",
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "7e80c9cc-84cb-422c-a262-ee7ba5c96271",
"metadata": {},
"outputs": [],
"source": [
"from datetime import datetime, timedelta\n",
"from matplotlib import pyplot as plt, dates as mdates"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f1f3be24-923c-4c4f-93d0-6395de88b0e3",
"metadata": {},
"outputs": [],
"source": [
"def mkfig(w=12, h=4, nrow=1, ncol=1, dpi=100, style='seaborn', **kwargs):\n",
" import matplotlib.pyplot as plt\n",
" plt.style.use(style)\n",
" return plt.subplots(\n",
" nrow, ncol, figsize=(w, h), dpi=dpi, \n",
" facecolor='lightgray', edgecolor='k', **kwargs)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4fe18602-ca76-4dfa-9928-3a7090650f6c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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qG9/+9vKzs5WMBhUUhK9zI7I0QzkaAZyNAM5moEczWDnHPkbM4bD4VBaWppSUlLU19cnSUpOTtanP/1pfetb31JaWpruuOMOWZalpKQkZhFtihzNQI5mIEczkKMZyNEMds6RYnGUpKQkOZ1O/fa3vw09FggElJ2drZtvvlmWZenOO+8MPRf2RI5mIEczkKMZyNEM5GgGu+bI3xhJu3fvVnNzsz744ANJ0pVXXqne3l7dd999kkZaYCAQkNPp1FVXXaUjR46otrY2lkvGJHbv3q0PPvhAu3fvljSSY3d3NznGGfajGdiPZmA/moH9aIZ42I8JfyrUE088oTfeeCN0qai6ulrr16/XlVdeqaeeekoPPvig/vZv/1bJycmSpOLiYvX29qqlpUWVlZUxXj1GPfHEE3r77bdDrfyCCy7Q2WefrauuukqPPfaYNmzYoGuuuYYcbY79aAb2oxnYj2ZgP5ohXvZjQl+xeO+99/TGG2/opptu0q233qobb7xRb775ph566CGlp6froosuktfr1b333ht6zbx587RgwQIuD9rI66+/rt/97ne66aabdMMNN2jFihWhhl5VVaUvf/nLamhoIEebYz+agf1oBvajGdiPZoin/ZjQp0L94Q9/0E9/+lN973vfU3p6uiSps7NTd911lwoKCnThhRdqYGBADz30kE444QQtWbJEgUBAb7/9tv7lX/5FRUVFMf4dQJJ+/vOfa9euXfrmN78ph8OhF198UVu2bNEZZ5yh9PR0rVixQgcOHNAjjzyi1NRUlZSUkKMNsR/NwH40A/vRDOxHM8TTfkzoOpqfn6958+appaVF0sibXnJzc3Xrrbfq4MGDev755/WZz3xGDzzwgE499VSlpqYqNTVV//zP/8xmswHLGunEwWBQaWlpCgQCsixLW7ZsUXd3t9566y39+Mc/1sMPPyy32637779f1dXV5GhT7Mf4xn40C/sxvrEfzRJP+zGhr1h0d3fru9/9roqLi3XNNdcoJSVFgUBAycnJ6uzs1PXXX6+zzz5bV1xxReg1nOtsPz6fT9u2bdMXvvAFtbe36+WXX9aaNWs0f/58HT58WLfddptKSkp0ww03hF5DjvbDfjQD+9EM7EczsB/NEE/7MSH/5ow2+fnz5+vqq6/Wm2++qaeeekrSJ++oz83N1dVXX626ujr5fL7QGcDckdI+RnN0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\n",
"text/plain": [
"<Figure size 800x300 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"now = datetime.utcnow()\n",
"N = 10\n",
"x = [now + timedelta(seconds=itm*20) for itm in range(N)]\n",
"y = list(range(N))\n",
"\n",
"\n",
"fig, ax = mkfig(8, 3)\n",
"formatter = mdates.DateFormatter('%M:%S')\n",
"ax.xaxis.set_major_formatter(formatter)\n",
"plt.setp( ax.xaxis.get_majorticklabels(), rotation=45 )\n",
"ax.plot(x, y, 'C0o-')\n",
"fig.tight_layout()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "48b96d4e-aed4-4fc7-ba38-a44487e86954",
"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.10.4"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment