From 91eda5ae34cef99b6a1a41e196002ba3c9ef87ed Mon Sep 17 00:00:00 2001
From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com>
Date: Tue, 20 Aug 2024 15:17:55 -0400
Subject: [PATCH] feat(prs): add filtering and table
---
notebook/dashboard.ipynb | 2680 +++-----------------------------------
requirements.txt | 2 +
2 files changed, 177 insertions(+), 2505 deletions(-)
diff --git a/notebook/dashboard.ipynb b/notebook/dashboard.ipynb
index 0c891940..8dde2a0a 100644
--- a/notebook/dashboard.ipynb
+++ b/notebook/dashboard.ipynb
@@ -87,6 +87,8 @@
"# lib imports\n",
"from dotenv import load_dotenv\n",
"from github import Github, UnknownObjectException\n",
+ "from IPython.display import display\n",
+ "from ipywidgets import widgets, interactive\n",
"import pandas as pd\n",
"import plotly.express as px\n",
"import plotly.graph_objects as go\n",
@@ -375,48 +377,184 @@
},
"source": [
"# Open PRs\n",
- "pr_data = []\n",
- "for repo in df_repos.to_dict('records'):\n",
- " draft_prs = 0\n",
- " non_draft_prs = 0\n",
- " dependabot_prs = 0\n",
+ "try:\n",
+ " pr_data\n",
+ "except NameError:\n",
+ " pr_data = []\n",
+ " for repo in df_repos.to_dict('records'):\n",
+ " for pr in repo['prs']:\n",
+ " pr_details = repo['_repo'].get_pull(pr.number)\n",
+ " pr_data.append({\n",
+ " \"repo\": repo['repo'],\n",
+ " \"number\": pr.number,\n",
+ " \"title\": pr_details.title,\n",
+ " \"author\": pr_details.user.login,\n",
+ " \"assignees\": [assignee.login for assignee in pr_details.assignees],\n",
+ " \"labels\": [label.name for label in pr_details.labels],\n",
+ " \"ready\": not pr_details.draft,\n",
+ " \"created_at\": pr_details.created_at if hasattr(pr_details, 'created_at') else None,\n",
+ " \"updated_at\": pr_details.updated_at if hasattr(pr_details, 'updated_at') else None,\n",
+ " })\n",
+ "\n",
+ "df_prs = pd.DataFrame(pr_data)\n",
"\n",
- " for pr in repo['prs']:\n",
- " pr_details = repo['_repo'].get_pull(pr.number)\n",
- " if pr_details.user.login == 'dependabot[bot]' or pr_details.user.login == 'renovate[bot]':\n",
- " dependabot_prs += 1\n",
- " elif pr_details.draft:\n",
- " draft_prs += 1\n",
+ "# Filter and sort functions\n",
+ "def filter_prs(\n",
+ " df,\n",
+ " repo='All',\n",
+ " author='All',\n",
+ " assignee='All',\n",
+ " label='All',\n",
+ " ready='All',\n",
+ " exclude_repo=False,\n",
+ " exclude_author=False,\n",
+ " exclude_assignee=False,\n",
+ " exclude_label=False,\n",
+ "):\n",
+ " if repo != 'All':\n",
+ " if exclude_repo:\n",
+ " df = df[df['repo'] != repo]\n",
+ " else:\n",
+ " df = df[df['repo'] == repo]\n",
+ " if author != 'All':\n",
+ " if exclude_author:\n",
+ " df = df[df['author'] != author]\n",
+ " else:\n",
+ " df = df[df['author'] == author]\n",
+ " if assignee != 'All':\n",
+ " if exclude_assignee:\n",
+ " df = df[~df['assignees'].apply(lambda x: assignee in x)]\n",
" else:\n",
- " non_draft_prs += 1\n",
+ " df = df[df['assignees'].apply(lambda x: assignee in x)]\n",
+ " if label != 'All':\n",
+ " if exclude_label:\n",
+ " df = df[~df['labels'].apply(lambda x: label in x)]\n",
+ " else:\n",
+ " df = df[df['labels'].apply(lambda x: label in x)]\n",
+ " if ready != 'All':\n",
+ " df = df[df['ready'] == (ready == 'Ready for Review')]\n",
+ " return df\n",
+ "\n",
+ "# Create dropdown filters\n",
+ "repo_filter = widgets.Dropdown(\n",
+ " options=['All'] + df_prs['repo'].unique().tolist(),\n",
+ " value='All',\n",
+ " description='Repo:',\n",
+ ")\n",
"\n",
- " pr_data.append({\n",
- " \"repo\": repo['repo'],\n",
- " \"Draft\": draft_prs,\n",
- " \"Ready for review\": non_draft_prs,\n",
- " \"Dependency\": dependabot_prs,\n",
- " })\n",
+ "author_filter = widgets.Dropdown(\n",
+ " options=['All'] + df_prs['author'].unique().tolist(),\n",
+ " value='All',\n",
+ " description='Author:',\n",
+ ")\n",
"\n",
- "df_prs = pd.DataFrame(pr_data)\n",
- "df_prs['total_prs'] = df_prs[['Draft', 'Ready for review', 'Dependency']].sum(axis=1)\n",
+ "assignee_filter = widgets.Dropdown(\n",
+ " options=['All'] + list(set(assignee for assignees in df_prs['assignees'] for assignee in assignees)),\n",
+ " value='All',\n",
+ " description='Assignee:',\n",
+ ")\n",
"\n",
- "# Sort by total PRs in descending order\n",
- "df_prs = df_prs.sort_values(by='total_prs', ascending=False)\n",
+ "label_filter = widgets.Dropdown(\n",
+ " options=['All'] + list(set(label for labels in df_prs['labels'] for label in labels)),\n",
+ " value='All',\n",
+ " description='Label:',\n",
+ ")\n",
"\n",
- "# Visualize data using a stacked bar chart\n",
- "fig = px.bar(\n",
- " df_prs,\n",
- " x='repo',\n",
- " y=['Draft', 'Ready for review', 'Dependency'],\n",
- " title='Open Pull Requests',\n",
- " labels={'value': 'Count', 'variable': 'PR Type'},\n",
- " barmode='stack'\n",
+ "ready_filter = widgets.Dropdown(\n",
+ " options=['All', 'Draft', 'Ready for Review'],\n",
+ " value='All',\n",
+ " description='Ready:',\n",
")\n",
- "fig.update_layout(\n",
- " yaxis_title='Count of PRs',\n",
- " xaxis_title='Repository',\n",
+ "\n",
+ "# Create exclusion checkboxes\n",
+ "exclude_repo_checkbox = widgets.Checkbox(\n",
+ " value=False,\n",
+ " description='Exclude selected repo',\n",
")\n",
- "fig.show()"
+ "\n",
+ "exclude_author_checkbox = widgets.Checkbox(\n",
+ " value=False,\n",
+ " description='Exclude selected author',\n",
+ ")\n",
+ "\n",
+ "exclude_assignee_checkbox = widgets.Checkbox(\n",
+ " value=False,\n",
+ " description='Exclude selected assignee',\n",
+ ")\n",
+ "\n",
+ "exclude_label_checkbox = widgets.Checkbox(\n",
+ " value=False,\n",
+ " description='Exclude selected label',\n",
+ ")\n",
+ "\n",
+ "# Text widget to display total number of PRs\n",
+ "total_prs_text = widgets.HTML(value=\"\")\n",
+ "\n",
+ "def update_visualizations(\n",
+ " repo,\n",
+ " author,\n",
+ " assignee,\n",
+ " label,\n",
+ " ready,\n",
+ " exclude_repo,\n",
+ " exclude_author,\n",
+ " exclude_assignee,\n",
+ " exclude_label,\n",
+ "):\n",
+ " filtered_df = filter_prs(\n",
+ " df_prs,\n",
+ " repo,\n",
+ " author,\n",
+ " assignee,\n",
+ " label,\n",
+ " ready,\n",
+ " exclude_repo,\n",
+ " exclude_author,\n",
+ " exclude_assignee,\n",
+ " exclude_label,\n",
+ " )\n",
+ "\n",
+ " # Update Table\n",
+ " fig_table = go.Figure(data=[go.Table(\n",
+ " header=dict(values=list(filtered_df.columns),\n",
+ " align='left'),\n",
+ " cells=dict(values=[filtered_df[col] for col in filtered_df.columns],\n",
+ " align='left'))\n",
+ " ])\n",
+ " fig_table.update_layout(height=800, title='Filtered PRs')\n",
+ "\n",
+ " # Update Bar Chart\n",
+ " df_bar = filtered_df.groupby(['repo', 'ready']).size().reset_index(name='count')\n",
+ " fig_bar = px.bar(\n",
+ " df_bar,\n",
+ " x='repo',\n",
+ " y='count',\n",
+ " color='ready',\n",
+ " title='PRs by Repo and Ready Status',\n",
+ " labels={'count': 'Number of PRs', 'repo': 'Repository', 'ready': 'Ready Status'},\n",
+ " barmode='stack',\n",
+ " text='count'\n",
+ " )\n",
+ "\n",
+ " # Update total PRs text\n",
+ " total_prs_text.value = f\"Filtered PRs: {len(filtered_df)}\"\n",
+ "\n",
+ " fig_table.show()\n",
+ " fig_bar.show()\n",
+ "\n",
+ "interactive_visualizations = interactive(\n",
+ " update_visualizations,\n",
+ " repo=repo_filter,\n",
+ " author=author_filter,\n",
+ " assignee=assignee_filter,\n",
+ " label=label_filter,\n",
+ " ready=ready_filter,\n",
+ " exclude_repo=exclude_repo_checkbox,\n",
+ " exclude_author=exclude_author_checkbox,\n",
+ " exclude_assignee=exclude_assignee_checkbox,\n",
+ " exclude_label=exclude_label_checkbox,\n",
+ ")\n",
+ "display(total_prs_text, interactive_visualizations)"
],
"outputs": [],
"execution_count": null
@@ -585,12 +723,7 @@
"id": "a520a320cd823874"
},
{
- "metadata": {
- "ExecuteTime": {
- "end_time": "2024-08-20T02:58:06.219404Z",
- "start_time": "2024-08-20T02:58:06.066344Z"
- }
- },
+ "metadata": {},
"cell_type": "code",
"source": [
"# Docs\n",
@@ -663,2471 +796,8 @@
" fig.show()"
],
"id": "ec43a8fd7f9d49bb",
- "outputs": [
- {
- "data": {
- "application/vnd.plotly.v1+json": {
- "data": [
- {
- "branchvalues": "total",
- "domain": {
- "x": [
- 0.0,
- 1.0
- ],
- "y": [
- 0.0,
- 1.0
- ]
- },
- "hovertemplate": "labels=%{label}
repo_count=%{value}
parent=%{parent}
id=%{id}",
- "ids": [
- "True/.github",
- "True/GSMS",
- "True/LizardByte.github.io",
- "True/RetroArcher",
- "True/Sunshine",
- "True/Themerr-jellyfin",
- "True/Themerr-kodi",
- "True/Themerr-plex",
- "True/ThemerrDB",
- "True/Virtual-Gamepad-Emulation-Bus",
- "True/Virtual-Gamepad-Emulation-Client",
- "True/Virtual-Gamepad-Emulation-dotnet",
- "True/awesome-sunshine",
- "False/build-deps",
- "True/create-release-action",
- "True/dashboard",
- "False/db",
- "True/doxyconfig",
- "True/homebrew-homebrew",
- "True/homebrew-release-action",
- "True/jellyfin-plugin-repo",
- "True/libdisplaydevice",
- "True/nvapi-open-source-sdk",
- "True/pacman-repo",
- "True/setup-python-action",
- "True/setup-release-action",
- "True/shared-web",
- "True/support-bot",
- "True/support-bot-commands",
- "True/template-base",
- "True/tray",
- "False/uno",
- "True/update-changelog-action",
- "False",
- "True"
- ],
- "labels": [
- ".github",
- "GSMS",
- "LizardByte.github.io",
- "RetroArcher",
- "Sunshine",
- "Themerr-jellyfin",
- "Themerr-kodi",
- "Themerr-plex",
- "ThemerrDB",
- "Virtual-Gamepad-Emulation-Bus",
- "Virtual-Gamepad-Emulation-Client",
- "Virtual-Gamepad-Emulation-dotnet",
- "awesome-sunshine",
- "build-deps",
- "create-release-action",
- "dashboard",
- "db",
- "doxyconfig",
- "homebrew-homebrew",
- "homebrew-release-action",
- "jellyfin-plugin-repo",
- "libdisplaydevice",
- "nvapi-open-source-sdk",
- "pacman-repo",
- "setup-python-action",
- "setup-release-action",
- "shared-web",
- "support-bot",
- "support-bot-commands",
- "template-base",
- "tray",
- "uno",
- "update-changelog-action",
- "False",
- "True"
- ],
- "name": "",
- "parents": [
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "False",
- "True",
- "True",
- "False",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "False",
- "True",
- "",
- ""
- ],
- "values": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 3,
- 30
- ],
- "type": "treemap"
- },
- {
- "branchvalues": "total",
- "domain": {
- "x": [
- 0.0,
- 1.0
- ],
- "y": [
- 0.0,
- 1.0
- ]
- },
- "hovertemplate": "labels=%{label}
repo_count=%{value}
parent=%{parent}
id=%{id}",
- "ids": [
- "True/.github",
- "True/GSMS",
- "True/LizardByte.github.io",
- "True/RetroArcher",
- "True/Sunshine",
- "True/Themerr-jellyfin",
- "True/Themerr-kodi",
- "True/Themerr-plex",
- "True/ThemerrDB",
- "True/Virtual-Gamepad-Emulation-Bus",
- "True/Virtual-Gamepad-Emulation-Client",
- "True/Virtual-Gamepad-Emulation-dotnet",
- "True/awesome-sunshine",
- "False/build-deps",
- "True/create-release-action",
- "True/dashboard",
- "False/db",
- "True/doxyconfig",
- "True/homebrew-homebrew",
- "True/homebrew-release-action",
- "True/jellyfin-plugin-repo",
- "True/libdisplaydevice",
- "True/nvapi-open-source-sdk",
- "True/pacman-repo",
- "True/setup-python-action",
- "True/setup-release-action",
- "True/shared-web",
- "True/support-bot",
- "True/support-bot-commands",
- "True/template-base",
- "True/tray",
- "False/uno",
- "True/update-changelog-action",
- "False",
- "True"
- ],
- "labels": [
- ".github",
- "GSMS",
- "LizardByte.github.io",
- "RetroArcher",
- "Sunshine",
- "Themerr-jellyfin",
- "Themerr-kodi",
- "Themerr-plex",
- "ThemerrDB",
- "Virtual-Gamepad-Emulation-Bus",
- "Virtual-Gamepad-Emulation-Client",
- "Virtual-Gamepad-Emulation-dotnet",
- "awesome-sunshine",
- "build-deps",
- "create-release-action",
- "dashboard",
- "db",
- "doxyconfig",
- "homebrew-homebrew",
- "homebrew-release-action",
- "jellyfin-plugin-repo",
- "libdisplaydevice",
- "nvapi-open-source-sdk",
- "pacman-repo",
- "setup-python-action",
- "setup-release-action",
- "shared-web",
- "support-bot",
- "support-bot-commands",
- "template-base",
- "tray",
- "uno",
- "update-changelog-action",
- "False",
- "True"
- ],
- "name": "",
- "parents": [
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "False",
- "True",
- "True",
- "False",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "True",
- "False",
- "True",
- "",
- ""
- ],
- "values": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 3,
- 30
- ],
- "type": "sunburst",
- "visible": false
- }
- ],
- "layout": {
- "template": {
- "data": {
- "histogram2dcontour": [
- {
- "type": "histogram2dcontour",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "choropleth": [
- {
- "type": "choropleth",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- ],
- "histogram2d": [
- {
- "type": "histogram2d",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "heatmap": [
- {
- "type": "heatmap",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "heatmapgl": [
- {
- "type": "heatmapgl",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "contourcarpet": [
- {
- "type": "contourcarpet",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- ],
- "contour": [
- {
- "type": "contour",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "surface": [
- {
- "type": "surface",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "mesh3d": [
- {
- "type": "mesh3d",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- ],
- "scatter": [
- {
- "marker": {
- "line": {
- "color": "#283442"
- }
- },
- "type": "scatter"
- }
- ],
- "parcoords": [
- {
- "type": "parcoords",
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scatterpolargl": [
- {
- "type": "scatterpolargl",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "bar": [
- {
- "error_x": {
- "color": "#f2f5fa"
- },
- "error_y": {
- "color": "#f2f5fa"
- },
- "marker": {
- "line": {
- "color": "rgb(17,17,17)",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "bar"
- }
- ],
- "scattergeo": [
- {
- "type": "scattergeo",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scatterpolar": [
- {
- "type": "scatterpolar",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "histogram": [
- {
- "marker": {
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "histogram"
- }
- ],
- "scattergl": [
- {
- "marker": {
- "line": {
- "color": "#283442"
- }
- },
- "type": "scattergl"
- }
- ],
- "scatter3d": [
- {
- "type": "scatter3d",
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scattermapbox": [
- {
- "type": "scattermapbox",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scatterternary": [
- {
- "type": "scatterternary",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scattercarpet": [
- {
- "type": "scattercarpet",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "carpet": [
- {
- "aaxis": {
- "endlinecolor": "#A2B1C6",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "minorgridcolor": "#506784",
- "startlinecolor": "#A2B1C6"
- },
- "baxis": {
- "endlinecolor": "#A2B1C6",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "minorgridcolor": "#506784",
- "startlinecolor": "#A2B1C6"
- },
- "type": "carpet"
- }
- ],
- "table": [
- {
- "cells": {
- "fill": {
- "color": "#506784"
- },
- "line": {
- "color": "rgb(17,17,17)"
- }
- },
- "header": {
- "fill": {
- "color": "#2a3f5f"
- },
- "line": {
- "color": "rgb(17,17,17)"
- }
- },
- "type": "table"
- }
- ],
- "barpolar": [
- {
- "marker": {
- "line": {
- "color": "rgb(17,17,17)",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "barpolar"
- }
- ],
- "pie": [
- {
- "automargin": true,
- "type": "pie"
- }
- ]
- },
- "layout": {
- "autotypenumbers": "strict",
- "colorway": [
- "#636efa",
- "#EF553B",
- "#00cc96",
- "#ab63fa",
- "#FFA15A",
- "#19d3f3",
- "#FF6692",
- "#B6E880",
- "#FF97FF",
- "#FECB52"
- ],
- "font": {
- "color": "#f2f5fa"
- },
- "hovermode": "closest",
- "hoverlabel": {
- "align": "left"
- },
- "paper_bgcolor": "rgb(17,17,17)",
- "plot_bgcolor": "rgb(17,17,17)",
- "polar": {
- "bgcolor": "rgb(17,17,17)",
- "angularaxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- },
- "radialaxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- }
- },
- "ternary": {
- "bgcolor": "rgb(17,17,17)",
- "aaxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- },
- "baxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- },
- "caxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- }
- },
- "coloraxis": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "colorscale": {
- "sequential": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "sequentialminus": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "diverging": [
- [
- 0,
- "#8e0152"
- ],
- [
- 0.1,
- "#c51b7d"
- ],
- [
- 0.2,
- "#de77ae"
- ],
- [
- 0.3,
- "#f1b6da"
- ],
- [
- 0.4,
- "#fde0ef"
- ],
- [
- 0.5,
- "#f7f7f7"
- ],
- [
- 0.6,
- "#e6f5d0"
- ],
- [
- 0.7,
- "#b8e186"
- ],
- [
- 0.8,
- "#7fbc41"
- ],
- [
- 0.9,
- "#4d9221"
- ],
- [
- 1,
- "#276419"
- ]
- ]
- },
- "xaxis": {
- "gridcolor": "#283442",
- "linecolor": "#506784",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "#283442",
- "automargin": true,
- "zerolinewidth": 2
- },
- "yaxis": {
- "gridcolor": "#283442",
- "linecolor": "#506784",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "#283442",
- "automargin": true,
- "zerolinewidth": 2
- },
- "scene": {
- "xaxis": {
- "backgroundcolor": "rgb(17,17,17)",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "#C8D4E3",
- "gridwidth": 2
- },
- "yaxis": {
- "backgroundcolor": "rgb(17,17,17)",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "#C8D4E3",
- "gridwidth": 2
- },
- "zaxis": {
- "backgroundcolor": "rgb(17,17,17)",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "#C8D4E3",
- "gridwidth": 2
- }
- },
- "shapedefaults": {
- "line": {
- "color": "#f2f5fa"
- }
- },
- "annotationdefaults": {
- "arrowcolor": "#f2f5fa",
- "arrowhead": 0,
- "arrowwidth": 1
- },
- "geo": {
- "bgcolor": "rgb(17,17,17)",
- "landcolor": "rgb(17,17,17)",
- "subunitcolor": "#506784",
- "showland": true,
- "showlakes": true,
- "lakecolor": "rgb(17,17,17)"
- },
- "title": {
- "x": 0.05
- },
- "updatemenudefaults": {
- "bgcolor": "#506784",
- "borderwidth": 0
- },
- "sliderdefaults": {
- "bgcolor": "#C8D4E3",
- "borderwidth": 1,
- "bordercolor": "rgb(17,17,17)",
- "tickwidth": 0
- },
- "mapbox": {
- "style": "dark"
- }
- }
- },
- "title": {
- "text": "Has README file"
- },
- "updatemenus": [
- {
- "buttons": [
- {
- "args": [
- {
- "visible": [
- true,
- false
- ]
- }
- ],
- "label": "Treemap",
- "method": "update"
- },
- {
- "args": [
- {
- "visible": [
- false,
- true
- ]
- }
- ],
- "label": "Sunburst",
- "method": "update"
- }
- ],
- "direction": "down",
- "showactive": true
- }
- ]
- },
- "config": {
- "plotlyServerURL": "https://plot.ly"
- }
- },
- "text/html": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.plotly.v1+json": {
- "data": [
- {
- "branchvalues": "total",
- "domain": {
- "x": [
- 0.0,
- 1.0
- ],
- "y": [
- 0.0,
- 1.0
- ]
- },
- "hovertemplate": "labels=%{label}
repo_count=%{value}
parent=%{parent}
id=%{id}",
- "ids": [
- "True/.github",
- "False/GSMS",
- "False/LizardByte.github.io",
- "True/RetroArcher",
- "True/Sunshine",
- "True/Themerr-jellyfin",
- "True/Themerr-kodi",
- "True/Themerr-plex",
- "False/ThemerrDB",
- "False/Virtual-Gamepad-Emulation-Bus",
- "False/Virtual-Gamepad-Emulation-Client",
- "False/Virtual-Gamepad-Emulation-dotnet",
- "False/awesome-sunshine",
- "False/build-deps",
- "False/create-release-action",
- "False/dashboard",
- "False/db",
- "True/doxyconfig",
- "False/homebrew-homebrew",
- "False/homebrew-release-action",
- "False/jellyfin-plugin-repo",
- "True/libdisplaydevice",
- "False/nvapi-open-source-sdk",
- "False/pacman-repo",
- "False/setup-python-action",
- "False/setup-release-action",
- "False/shared-web",
- "False/support-bot",
- "False/support-bot-commands",
- "False/template-base",
- "True/tray",
- "False/uno",
- "False/update-changelog-action",
- "False",
- "True"
- ],
- "labels": [
- ".github",
- "GSMS",
- "LizardByte.github.io",
- "RetroArcher",
- "Sunshine",
- "Themerr-jellyfin",
- "Themerr-kodi",
- "Themerr-plex",
- "ThemerrDB",
- "Virtual-Gamepad-Emulation-Bus",
- "Virtual-Gamepad-Emulation-Client",
- "Virtual-Gamepad-Emulation-dotnet",
- "awesome-sunshine",
- "build-deps",
- "create-release-action",
- "dashboard",
- "db",
- "doxyconfig",
- "homebrew-homebrew",
- "homebrew-release-action",
- "jellyfin-plugin-repo",
- "libdisplaydevice",
- "nvapi-open-source-sdk",
- "pacman-repo",
- "setup-python-action",
- "setup-release-action",
- "shared-web",
- "support-bot",
- "support-bot-commands",
- "template-base",
- "tray",
- "uno",
- "update-changelog-action",
- "False",
- "True"
- ],
- "name": "",
- "parents": [
- "True",
- "False",
- "False",
- "True",
- "True",
- "True",
- "True",
- "True",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "True",
- "False",
- "False",
- "False",
- "True",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "True",
- "False",
- "False",
- "",
- ""
- ],
- "values": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 24,
- 9
- ],
- "type": "treemap"
- },
- {
- "branchvalues": "total",
- "domain": {
- "x": [
- 0.0,
- 1.0
- ],
- "y": [
- 0.0,
- 1.0
- ]
- },
- "hovertemplate": "labels=%{label}
repo_count=%{value}
parent=%{parent}
id=%{id}",
- "ids": [
- "True/.github",
- "False/GSMS",
- "False/LizardByte.github.io",
- "True/RetroArcher",
- "True/Sunshine",
- "True/Themerr-jellyfin",
- "True/Themerr-kodi",
- "True/Themerr-plex",
- "False/ThemerrDB",
- "False/Virtual-Gamepad-Emulation-Bus",
- "False/Virtual-Gamepad-Emulation-Client",
- "False/Virtual-Gamepad-Emulation-dotnet",
- "False/awesome-sunshine",
- "False/build-deps",
- "False/create-release-action",
- "False/dashboard",
- "False/db",
- "True/doxyconfig",
- "False/homebrew-homebrew",
- "False/homebrew-release-action",
- "False/jellyfin-plugin-repo",
- "True/libdisplaydevice",
- "False/nvapi-open-source-sdk",
- "False/pacman-repo",
- "False/setup-python-action",
- "False/setup-release-action",
- "False/shared-web",
- "False/support-bot",
- "False/support-bot-commands",
- "False/template-base",
- "True/tray",
- "False/uno",
- "False/update-changelog-action",
- "False",
- "True"
- ],
- "labels": [
- ".github",
- "GSMS",
- "LizardByte.github.io",
- "RetroArcher",
- "Sunshine",
- "Themerr-jellyfin",
- "Themerr-kodi",
- "Themerr-plex",
- "ThemerrDB",
- "Virtual-Gamepad-Emulation-Bus",
- "Virtual-Gamepad-Emulation-Client",
- "Virtual-Gamepad-Emulation-dotnet",
- "awesome-sunshine",
- "build-deps",
- "create-release-action",
- "dashboard",
- "db",
- "doxyconfig",
- "homebrew-homebrew",
- "homebrew-release-action",
- "jellyfin-plugin-repo",
- "libdisplaydevice",
- "nvapi-open-source-sdk",
- "pacman-repo",
- "setup-python-action",
- "setup-release-action",
- "shared-web",
- "support-bot",
- "support-bot-commands",
- "template-base",
- "tray",
- "uno",
- "update-changelog-action",
- "False",
- "True"
- ],
- "name": "",
- "parents": [
- "True",
- "False",
- "False",
- "True",
- "True",
- "True",
- "True",
- "True",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "True",
- "False",
- "False",
- "False",
- "True",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "False",
- "True",
- "False",
- "False",
- "",
- ""
- ],
- "values": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 24,
- 9
- ],
- "type": "sunburst",
- "visible": false
- }
- ],
- "layout": {
- "template": {
- "data": {
- "histogram2dcontour": [
- {
- "type": "histogram2dcontour",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "choropleth": [
- {
- "type": "choropleth",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- ],
- "histogram2d": [
- {
- "type": "histogram2d",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "heatmap": [
- {
- "type": "heatmap",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "heatmapgl": [
- {
- "type": "heatmapgl",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "contourcarpet": [
- {
- "type": "contourcarpet",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- ],
- "contour": [
- {
- "type": "contour",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "surface": [
- {
- "type": "surface",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- }
- ],
- "mesh3d": [
- {
- "type": "mesh3d",
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- ],
- "scatter": [
- {
- "marker": {
- "line": {
- "color": "#283442"
- }
- },
- "type": "scatter"
- }
- ],
- "parcoords": [
- {
- "type": "parcoords",
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scatterpolargl": [
- {
- "type": "scatterpolargl",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "bar": [
- {
- "error_x": {
- "color": "#f2f5fa"
- },
- "error_y": {
- "color": "#f2f5fa"
- },
- "marker": {
- "line": {
- "color": "rgb(17,17,17)",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "bar"
- }
- ],
- "scattergeo": [
- {
- "type": "scattergeo",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scatterpolar": [
- {
- "type": "scatterpolar",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "histogram": [
- {
- "marker": {
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "histogram"
- }
- ],
- "scattergl": [
- {
- "marker": {
- "line": {
- "color": "#283442"
- }
- },
- "type": "scattergl"
- }
- ],
- "scatter3d": [
- {
- "type": "scatter3d",
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scattermapbox": [
- {
- "type": "scattermapbox",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scatterternary": [
- {
- "type": "scatterternary",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "scattercarpet": [
- {
- "type": "scattercarpet",
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- }
- }
- ],
- "carpet": [
- {
- "aaxis": {
- "endlinecolor": "#A2B1C6",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "minorgridcolor": "#506784",
- "startlinecolor": "#A2B1C6"
- },
- "baxis": {
- "endlinecolor": "#A2B1C6",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "minorgridcolor": "#506784",
- "startlinecolor": "#A2B1C6"
- },
- "type": "carpet"
- }
- ],
- "table": [
- {
- "cells": {
- "fill": {
- "color": "#506784"
- },
- "line": {
- "color": "rgb(17,17,17)"
- }
- },
- "header": {
- "fill": {
- "color": "#2a3f5f"
- },
- "line": {
- "color": "rgb(17,17,17)"
- }
- },
- "type": "table"
- }
- ],
- "barpolar": [
- {
- "marker": {
- "line": {
- "color": "rgb(17,17,17)",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "barpolar"
- }
- ],
- "pie": [
- {
- "automargin": true,
- "type": "pie"
- }
- ]
- },
- "layout": {
- "autotypenumbers": "strict",
- "colorway": [
- "#636efa",
- "#EF553B",
- "#00cc96",
- "#ab63fa",
- "#FFA15A",
- "#19d3f3",
- "#FF6692",
- "#B6E880",
- "#FF97FF",
- "#FECB52"
- ],
- "font": {
- "color": "#f2f5fa"
- },
- "hovermode": "closest",
- "hoverlabel": {
- "align": "left"
- },
- "paper_bgcolor": "rgb(17,17,17)",
- "plot_bgcolor": "rgb(17,17,17)",
- "polar": {
- "bgcolor": "rgb(17,17,17)",
- "angularaxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- },
- "radialaxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- }
- },
- "ternary": {
- "bgcolor": "rgb(17,17,17)",
- "aaxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- },
- "baxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- },
- "caxis": {
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "ticks": ""
- }
- },
- "coloraxis": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "colorscale": {
- "sequential": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "sequentialminus": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "diverging": [
- [
- 0,
- "#8e0152"
- ],
- [
- 0.1,
- "#c51b7d"
- ],
- [
- 0.2,
- "#de77ae"
- ],
- [
- 0.3,
- "#f1b6da"
- ],
- [
- 0.4,
- "#fde0ef"
- ],
- [
- 0.5,
- "#f7f7f7"
- ],
- [
- 0.6,
- "#e6f5d0"
- ],
- [
- 0.7,
- "#b8e186"
- ],
- [
- 0.8,
- "#7fbc41"
- ],
- [
- 0.9,
- "#4d9221"
- ],
- [
- 1,
- "#276419"
- ]
- ]
- },
- "xaxis": {
- "gridcolor": "#283442",
- "linecolor": "#506784",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "#283442",
- "automargin": true,
- "zerolinewidth": 2
- },
- "yaxis": {
- "gridcolor": "#283442",
- "linecolor": "#506784",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "#283442",
- "automargin": true,
- "zerolinewidth": 2
- },
- "scene": {
- "xaxis": {
- "backgroundcolor": "rgb(17,17,17)",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "#C8D4E3",
- "gridwidth": 2
- },
- "yaxis": {
- "backgroundcolor": "rgb(17,17,17)",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "#C8D4E3",
- "gridwidth": 2
- },
- "zaxis": {
- "backgroundcolor": "rgb(17,17,17)",
- "gridcolor": "#506784",
- "linecolor": "#506784",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "#C8D4E3",
- "gridwidth": 2
- }
- },
- "shapedefaults": {
- "line": {
- "color": "#f2f5fa"
- }
- },
- "annotationdefaults": {
- "arrowcolor": "#f2f5fa",
- "arrowhead": 0,
- "arrowwidth": 1
- },
- "geo": {
- "bgcolor": "rgb(17,17,17)",
- "landcolor": "rgb(17,17,17)",
- "subunitcolor": "#506784",
- "showland": true,
- "showlakes": true,
- "lakecolor": "rgb(17,17,17)"
- },
- "title": {
- "x": 0.05
- },
- "updatemenudefaults": {
- "bgcolor": "#506784",
- "borderwidth": 0
- },
- "sliderdefaults": {
- "bgcolor": "#C8D4E3",
- "borderwidth": 1,
- "bordercolor": "rgb(17,17,17)",
- "tickwidth": 0
- },
- "mapbox": {
- "style": "dark"
- }
- }
- },
- "title": {
- "text": "Uses ReadTheDocs"
- },
- "updatemenus": [
- {
- "buttons": [
- {
- "args": [
- {
- "visible": [
- true,
- false
- ]
- }
- ],
- "label": "Treemap",
- "method": "update"
- },
- {
- "args": [
- {
- "visible": [
- false,
- true
- ]
- }
- ],
- "label": "Sunburst",
- "method": "update"
- }
- ],
- "direction": "down",
- "showactive": true
- }
- ]
- },
- "config": {
- "plotlyServerURL": "https://plot.ly"
- }
- },
- "text/html": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "execution_count": 188
+ "outputs": [],
+ "execution_count": null
}
],
"metadata": {
diff --git a/requirements.txt b/requirements.txt
index 744dbbca..7fdee19d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,5 @@
+ipython==8.26.0
+ipywidgets==8.1.3
notebook==7.2.1
pandas==2.2.2
plotly==5.23.0