Files
quant/vectorbt/tests/notebooks/plotting.ipynb

1108 lines
25 KiB
Plaintext
Raw Permalink Normal View History

2025-11-01 09:32:26 +08:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# plotting"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import vectorbt as vbt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"Collapsed": "false"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"from datetime import datetime\n",
"from numba import njit\n",
"import itertools\n",
"import ipywidgets"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(100, 100)\n"
]
}
],
"source": [
"big_df = pd.DataFrame(np.random.uniform(size=(100, 100)).astype(float))\n",
"big_df.columns = list(map(str, big_df.columns))\n",
"print(big_df.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Indicator"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'domain': {'x': [0, 1], 'y': [0, 1]},\n",
" 'gauge': {'axis': {'range': […"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gauge = vbt.plotting.Gauge(value=0, value_range=(-1, 1))\n",
"gauge.fig"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"gauge.update(1)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"172 ms ± 1.65 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"468 µs ± 862 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
]
}
],
"source": [
"%timeit vbt.plotting.Gauge(value=0)\n",
"\n",
"big_gauge = vbt.plotting.Gauge(value=0)\n",
"%timeit big_gauge.update(0)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Bar"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'bar',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bar = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['a', 'b']).vbt.barplot(return_fig=False)\n",
"bar.fig"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"bar.update([[7, 8], [9, 10], [11, 12]])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'bar',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bar1 = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['a', 'b']).vbt.barplot(return_fig=False)\n",
"bar2 = pd.DataFrame([[7, 8], [9, 10], [11, 12]], columns=['c', 'd']).vbt.barplot(return_fig=False, fig=bar1.fig)\n",
"bar2.fig"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"bar1.update([[7, 8], [9, 10], [11, 12]])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"bar2.update([[1, 2], [3, 4], [5, 6]])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"IOPub message rate exceeded.\n",
"The notebook server will temporarily stop sending output\n",
"to the client in order to avoid crashing it.\n",
"To change this limit, set the config variable\n",
"`--NotebookApp.iopub_msg_rate_limit`.\n",
"\n",
"Current values:\n",
"NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
"NotebookApp.rate_limit_window=3.0 (secs)\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"350 ms ± 36.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"4.05 ms ± 17.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"%timeit pd.DataFrame(big_df).vbt.barplot()\n",
"\n",
"big_bar = pd.DataFrame(big_df).vbt.barplot(return_fig=False)\n",
"%timeit big_bar.update(big_df.values * 2)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scatter"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'scatter',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['a', 'b']).vbt.plot(return_fig=False)\n",
"scatter.fig"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"scatter.update([[6, 5], [4, 3], [2, 1]])"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'scatter',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"scatter1 = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['a', 'b']).vbt.plot(return_fig=False)\n",
"scatter2 = pd.DataFrame([[7, 8], [9, 10], [11, 12]], columns=['c', 'd']).vbt.plot(return_fig=False, fig=scatter1.fig)\n",
"scatter2.fig"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"scatter1.update([[7, 8], [9, 10], [11, 12]])"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"scatter2.update([[1, 2], [3, 4], [5, 6]])"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"IOPub message rate exceeded.\n",
"The notebook server will temporarily stop sending output\n",
"to the client in order to avoid crashing it.\n",
"To change this limit, set the config variable\n",
"`--NotebookApp.iopub_msg_rate_limit`.\n",
"\n",
"Current values:\n",
"NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
"NotebookApp.rate_limit_window=3.0 (secs)\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.34 ms ± 48.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"%timeit pd.DataFrame(big_df).vbt.plot()\n",
"\n",
"big_scatter = pd.DataFrame(big_df).vbt.plot(return_fig=False)\n",
"%timeit big_scatter.update(big_df.values * 2)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Histogram"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'opacity': 0.75,\n",
" 'showlegend': True,\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hist = pd.DataFrame([[1, 2], [3, 4], [2, 1]], columns=['a', 'b']).vbt.histplot(return_fig=False)\n",
"hist.fig"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"hist.update([[4, 9], [4, 5], [3, 0]])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'opacity': 0.75,\n",
" 'showlegend': True,\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pd.DataFrame([[1, 2], [3, 4], [2, 1]], columns=['a', 'b']).vbt.histplot(horizontal=True)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'opacity': 0.75,\n",
" 'showlegend': True,\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hist1 = pd.DataFrame([[1, 2], [3, 4], [2, 1]], columns=['a', 'b']).vbt.histplot(return_fig=False)\n",
"hist2 = pd.DataFrame([[4, 9], [4, 5], [3, 0]], columns=['c', 'd']).vbt.histplot(return_fig=False, fig=hist1.fig)\n",
"hist2.fig"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"hist1.update([[4, 9], [4, 5], [3, 0]])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"hist2.update([[1, 2], [3, 4], [2, 1]])"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"IOPub message rate exceeded.\n",
"The notebook server will temporarily stop sending output\n",
"to the client in order to avoid crashing it.\n",
"To change this limit, set the config variable\n",
"`--NotebookApp.iopub_msg_rate_limit`.\n",
"\n",
"Current values:\n",
"NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
"NotebookApp.rate_limit_window=3.0 (secs)\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"331 ms ± 24.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"4.32 ms ± 43.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"%timeit pd.DataFrame(big_df).vbt.histplot()\n",
"\n",
"big_hist = pd.DataFrame(big_df).vbt.histplot(return_fig=False)\n",
"%timeit big_hist.update(big_df.values * 2)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Box"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'box',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"box = pd.DataFrame([[1, 2], [3, 4], [2, 1]], columns=['a', 'b']).vbt.boxplot(return_fig=False)\n",
"box.fig"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"box.update([[4, 9], [4, 5], [3, 0]])"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'box',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pd.DataFrame([[1, 2], [3, 4], [2, 1]], columns=['a', 'b']).vbt.boxplot(horizontal=True)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'name': 'a',\n",
" 'showlegend': True,\n",
" 'type': 'box',\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"box1 = pd.DataFrame([[1, 2], [3, 4], [2, 1]], columns=['a', 'b']).vbt.boxplot(return_fig=False)\n",
"box2 = pd.DataFrame([[4, 9], [4, 5], [3, 0]], columns=['c', 'd']).vbt.boxplot(return_fig=False, fig=box1.fig)\n",
"box2.fig"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"box1.update([[4, 9], [4, 5], [3, 0]])"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"box2.update([[1, 2], [3, 4], [2, 1]])"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"IOPub message rate exceeded.\n",
"The notebook server will temporarily stop sending output\n",
"to the client in order to avoid crashing it.\n",
"To change this limit, set the config variable\n",
"`--NotebookApp.iopub_msg_rate_limit`.\n",
"\n",
"Current values:\n",
"NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
"NotebookApp.rate_limit_window=3.0 (secs)\n",
"\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"329 ms ± 25.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"4.29 ms ± 36.6 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n"
]
}
],
"source": [
"%timeit pd.DataFrame(big_df).vbt.boxplot()\n",
"\n",
"big_box = pd.DataFrame(big_df).vbt.boxplot(return_fig=False)\n",
"%timeit big_box.update(big_df.values * 2)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Heatmap"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"heatmap = pd.DataFrame(\n",
" [[1, 2], [3, 4], [5, 6]], \n",
" columns=['a', 'b'], \n",
" index=['x', 'y', 'z']\n",
").vbt.heatmap(return_fig=False)\n",
"heatmap.fig"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"heatmap.update([[6, 5], [4, 3], [2, 1]])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pd.DataFrame(\n",
" [[1, 2], [3, 4], [5, 6]], \n",
" columns=['a', 'b'], \n",
" index=['x', 'y', 'z']\n",
").vbt.ts_heatmap()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"heatmap1 = pd.DataFrame([[1, 2], [3, 4], [5, 6]], columns=['a', 'b'], index=['x', 'y', 'z']).vbt.heatmap(\n",
" return_fig=False, trace_kwargs=dict(showscale=False))\n",
"heatmap2 = pd.DataFrame([[6, 5], [4, 3], [2, 1]], columns=['c', 'd'], index=['x2', 'y2', 'z2']).vbt.heatmap(\n",
" return_fig=False, fig=heatmap1.fig)\n",
"heatmap2.fig"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"heatmap1.update([[6, 5], [4, 3], [2, 1]])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"heatmap2.update([[1, 2], [3, 4], [5, 6]])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"heatmap_sr = pd.Series(\n",
" [1, 2, 3, 6, 5, 4], \n",
" index=vbt.base.index_fns.stack_indexes([\n",
" pd.Index(['i1', 'i2', 'i3', 'i1', 'i2', 'i3'], name='first'),\n",
" pd.Index(['i4', 'i5', 'i6', 'i4', 'i5', 'i6'], name='second'),\n",
" pd.Index(['i7', 'i7', 'i7', 'i8', 'i8', 'i8'], name='third')\n",
" ])\n",
")\n",
"heatmap_sr.vbt.heatmap(x_level=0, y_level=1, symmetric=True)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"heatmap_sr.vbt.heatmap(x_level=0, y_level=1, symmetric=True, slider_level=2)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"427 ms ± 53.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"112 µs ± 7.16 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
]
}
],
"source": [
"%timeit pd.DataFrame(big_df).vbt.heatmap()\n",
"\n",
"big_heatmap = pd.DataFrame(big_df).vbt.heatmap(return_fig=False)\n",
"%timeit big_heatmap.update(big_df.values * 2)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Volume"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x, y, z, g = np.mgrid[0:15, 15:25, 25:30, :2]\n",
"volume_sr = pd.Series(\n",
" np.random.randint(1, 10, size=x.flatten().shape), \n",
" index=vbt.base.index_fns.stack_indexes([\n",
" pd.Index(x.flatten(), name='first'),\n",
" pd.Index(y.flatten(), name='second'),\n",
" pd.Index(z.flatten(), name='third'),\n",
" pd.Index(g.flatten(), name='fourth')\n",
" ])\n",
")\n",
"volume = volume_sr.vbt.volume(x_level='first', y_level='second', z_level='third', return_fig=False)\n",
"volume.fig"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"volume.update(np.random.randint(1, 10, size=x.flatten().shape))"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FigureWidget({\n",
" 'data': [{'colorscale': [[0.0, '#0d0887'], [0.1111111111111111, '#46039f'],\n",
" …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"volume_sr.vbt.volume(x_level='first', y_level='second', z_level='third', slider_level='fourth')"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.33 s ± 96.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
"822 µs ± 478 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
]
}
],
"source": [
"x, y, z = np.mgrid[:50, :50, :50]\n",
"big_volume_sr = pd.Series(\n",
" np.random.randint(1, 10, size=x.flatten().shape), \n",
" index=vbt.base.index_fns.stack_indexes(\n",
" pd.Index(x.flatten(), name='i1'),\n",
" pd.Index(y.flatten(), name='i2'),\n",
" pd.Index(z.flatten(), name='i3')\n",
" )\n",
")\n",
"%timeit big_volume_sr.vbt.volume()\n",
"\n",
"big_volume = big_volume_sr.vbt.volume(return_fig=False)\n",
"%timeit big_volume.update(big_volume_sr.values * 2)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"ipywidgets.Widget.close_all()"
]
},
{
"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.7.3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}