Skip to content

Instantly share code, notes, and snippets.

@Magnus167
Created January 16, 2023 16:51
Show Gist options
  • Save Magnus167/bf8f6c732d38949e2d20fb9ba6c90293 to your computer and use it in GitHub Desktop.
Save Magnus167/bf8f6c732d38949e2d20fb9ba6c90293 to your computer and use it in GitHub Desktop.
tree maps for pydirstats
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def fib(n, ns={0 : 0, 1 : 1}):\n",
" if n in ns:\n",
" return ns[n]\n",
" else:\n",
" ns[n] = fib(n-1, ns) + fib(n-2, ns)\n",
" return ns[n]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import squarify \n",
"sizes = [fib(n) for n in range(1, 20)]\n",
"labels = [str(n) for n in range(1, 20)]\n",
"\n",
"squarify.plot(sizes=sizes, label=labels, alpha=.8 )\n",
"plt.axis('off')\n",
"plt.show()\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "py39",
"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.9.15"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "cf99dc05b7c5a564d3a5b7593713bffb7a71b20bab76bb0d23424edfa9a5a797"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment