{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import plotly_express as px # import plotly.express as px\n", "import plotly.graph_objects as go\n", "import pandas as pd\n", "import numpy as np\n", "import os\n", "\n", "name = [\"NeRF\", \"PANO\", \"OURS+\", \"OURS\"]\n", "foveal = 8.0\n", "mid = 2.8\n", "far = 2.6\n", "blend = 0.1\n", "ours_full = 562\n", "pano = 1e4\n", "nerf = 9e4\n", "\n", "times = {\n", " \"fovea_l\": 0,\n", " \"mid_l\": 0,\n", " \"far_l\": 0,\n", " \"fovea_r\": 0,\n", " \"mid_r\": 0,\n", " \"far_r\": 0,\n", " \"blend\": 0,\n", " \"ours_full\": 0,\n", " \"pano\": 0,\n", " \"nerf\": 0,\n", "}\n", "clip = 0\n", "frame_id = 0\n", "\n", "\n", "def calc_total():\n", " return [\n", " times[\"nerf\"],\n", " times[\"pano\"],\n", " times[\"ours_full\"],\n", " times[\"fovea_l\"] + times[\"mid_l\"] + times[\"far_l\"] +\n", " times[\"fovea_r\"] + times[\"mid_r\"] + times[\"far_r\"] + times[\"blend\"]\n", " ]\n", "\n", "\n", "def draw_frame(*, xlim=None, **kwargs):\n", " global frame_id\n", " for key in kwargs:\n", " times[key] = kwargs[key]\n", " tot = calc_total()\n", " data = {\n", " \"fovea_l\": [0, 0, 0, times[\"fovea_l\"]],\n", " \"mid_l\": [0, 0, 0, times[\"mid_l\"]],\n", " \"far_l\": [0, 0, 0, times[\"far_l\"]],\n", " \"fovea_r\": [0, 0, 0, times[\"fovea_r\"]],\n", " \"mid_r\": [0, 0, 0, times[\"mid_r\"]],\n", " \"far_r\": [0, 0, 0, times[\"far_r\"]],\n", " \"blend\": [0, 0, 0, times[\"blend\"]],\n", " \"ours_full\": [0, 0, times[\"ours_full\"], 0],\n", " \"pano\": [0, times[\"pano\"], 0, 0],\n", " \"nerf\": [times[\"nerf\"], 0, 0, 0],\n", " }\n", " if xlim is None or xlim < max(tot) * 1.1:\n", " xlim = max(tot) * 1.1\n", " \n", " fig = go.Figure()\n", " times_keys = list(times.keys())\n", " for key in times_keys:\n", " if key == times_keys[-1]:\n", " fig.add_trace(go.Bar(\n", " y=name,\n", " x=data[key],\n", " name=key,\n", " orientation='h',\n", " text=[\"\" if item == 0 else f\"{item:.1f}\" if item < 1000 else f\"{item:.1e}\" for item in tot],\n", " textposition=\"outside\"\n", " ))\n", " else:\n", " fig.add_trace(go.Bar(\n", " y=name,\n", " x=data[key],\n", " name=key,\n", " orientation='h',\n", " ))\n", " fig.update_traces(width=0.5)\n", " fig.update_layout(barmode='stack', showlegend=False,\n", " yaxis_visible=False, yaxis_showticklabels=False, xaxis_range=[0, xlim])\n", " \n", " # fig.show()\n", " fig.write_image(f\"dynamic_bar/clip_{clip}/{frame_id:04d}.png\", width=1920 // 2, height=1080 // 2, scale=2)\n", " frame_id = frame_id + 1\n", "\n", "def add_animation(*, frames, xlim=None, **kwargs):\n", " if frames == 1:\n", " draw_frame(**kwargs, xlim=xlim)\n", " return\n", " data = {\n", " key: np.linspace(times[key], kwargs[key], frames)\n", " for key in kwargs\n", " }\n", " for i in range(frames):\n", " draw_frame(**{key: data[key][i] for key in data}, xlim=xlim)\n", "\n", "def new_clip():\n", " global clip, frame_id\n", " clip += 1\n", " frame_id = 0\n", " os.system(f\"mkdir dynamic_bar/clip_{clip}\")\n", "\n", "os.system('rm -f -r dynamic_bar')\n", "os.system('mkdir dynamic_bar')\n", "\n", "# ours mono\n", "new_clip()\n", "add_animation(fovea_l=foveal, frames=48, xlim=30) # Step 1: grow foveal\n", "add_animation(mid_l=mid, frames=16, xlim=30) # Step 2: grow mid\n", "add_animation(far_l=far, frames=16, xlim=30) # Step 3: grow far\n", "add_animation(blend=blend, frames=1, xlim=30) # Step 4: grow blend\n", "\n", "# ours stereo\n", "new_clip()\n", "add_animation(fovea_r=foveal, frames=24, xlim=30) # Step 1: grow foveal\n", "add_animation(mid_r=mid, frames=8, xlim=30) # Step 2: grow mid\n", "add_animation(far_r=far, frames=8, xlim=30) # Step 3: grow far\n", "\n", "# ours stereo adapt\n", "new_clip()\n", "add_animation(mid_r=0, far_r=0, frames=24, xlim=30)\n", "\n", "# other series\n", "new_clip()\n", "add_animation(ours_full=ours_full, frames=48, xlim=30)\n", "new_clip()\n", "add_animation(pano=pano, frames=48, xlim=30)\n", "new_clip()\n", "add_animation(nerf=nerf, frames=48, xlim=30)\n", "\n", "#os.system(f'ffmpeg -y -r 24 -i dynamic_bar/%04d.png dynamic_bar.avi')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "fig = px.bar(\n", " df1, # 绘图数据\n", " x=list(times.keys()), # y轴\n", " y=\"name\", # x轴\n", " orientation='h', # 水平柱状图\n", " #text=[[\"a\", \"tot\"], \"tot1\", \"tot2\", {\"fovea_l\": \"\", \"blend_r\": 13.5}] # 需要显示的数据\n", ")\n", "fig.update_traces(textposition=\"outside\", showlegend=False, text=[[\"a\"]*11, [\"b\"]*11, [\"c\"]*11, [\"d\"]*11,[\"e\"]*11])\n", "fig.show()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | country | \n", "continent | \n", "year | \n", "lifeExp | \n", "pop | \n", "gdpPercap | \n", "iso_alpha | \n", "iso_num | \n", "
---|---|---|---|---|---|---|---|---|
0 | \n", "Afghanistan | \n", "Asia | \n", "1952 | \n", "28.801 | \n", "8425333 | \n", "779.445314 | \n", "AFG | \n", "4 | \n", "
1 | \n", "Afghanistan | \n", "Asia | \n", "1957 | \n", "30.332 | \n", "9240934 | \n", "820.853030 | \n", "AFG | \n", "4 | \n", "
2 | \n", "Afghanistan | \n", "Asia | \n", "1962 | \n", "31.997 | \n", "10267083 | \n", "853.100710 | \n", "AFG | \n", "4 | \n", "
3 | \n", "Afghanistan | \n", "Asia | \n", "1967 | \n", "34.020 | \n", "11537966 | \n", "836.197138 | \n", "AFG | \n", "4 | \n", "
4 | \n", "Afghanistan | \n", "Asia | \n", "1972 | \n", "36.088 | \n", "13079460 | \n", "739.981106 | \n", "AFG | \n", "4 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1699 | \n", "Zimbabwe | \n", "Africa | \n", "1987 | \n", "62.351 | \n", "9216418 | \n", "706.157306 | \n", "ZWE | \n", "716 | \n", "
1700 | \n", "Zimbabwe | \n", "Africa | \n", "1992 | \n", "60.377 | \n", "10704340 | \n", "693.420786 | \n", "ZWE | \n", "716 | \n", "
1701 | \n", "Zimbabwe | \n", "Africa | \n", "1997 | \n", "46.809 | \n", "11404948 | \n", "792.449960 | \n", "ZWE | \n", "716 | \n", "
1702 | \n", "Zimbabwe | \n", "Africa | \n", "2002 | \n", "39.989 | \n", "11926563 | \n", "672.038623 | \n", "ZWE | \n", "716 | \n", "
1703 | \n", "Zimbabwe | \n", "Africa | \n", "2007 | \n", "43.487 | \n", "12311143 | \n", "469.709298 | \n", "ZWE | \n", "716 | \n", "
1704 rows × 8 columns
\n", "