From 9cb6feeefdf393fff903eb14ee62aad06fbdd17c Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Mon, 19 Aug 2024 22:56:18 -0400 Subject: [PATCH] feat(visuals): option for sunburst --- notebook/dashboard.ipynb | 2620 +++++++++++++++++++++++++++++++++++++- 1 file changed, 2579 insertions(+), 41 deletions(-) diff --git a/notebook/dashboard.ipynb b/notebook/dashboard.ipynb index da2a1b09..0c891940 100644 --- a/notebook/dashboard.ipynb +++ b/notebook/dashboard.ipynb @@ -89,6 +89,7 @@ "from github import Github, UnknownObjectException\n", "import pandas as pd\n", "import plotly.express as px\n", + "import plotly.graph_objects as go\n", "import plotly.io as pio\n", "import requests\n", "\n", @@ -511,30 +512,67 @@ "df_languages = pd.DataFrame(language_data)\n", "\n", "# Aggregate data by language and repo\n", - "language_counts = df_languages.groupby(['language', 'repo']).agg({\n", + "language_counts_bytes = df_languages.groupby(['language', 'repo']).agg({\n", " 'bytes_of_code': 'sum'\n", "}).reset_index()\n", "\n", - "fig_treemap = px.treemap(\n", - " language_counts,\n", - " path=['language', 'repo'],\n", - " values='bytes_of_code',\n", - " title='Programming Languages by Bytes of Code (Treemap)',\n", - " hover_data={'repo': True, 'bytes_of_code': True}\n", - ")\n", - "fig_treemap.show()\n", + "language_counts_repos = df_languages.groupby(['language', 'repo']).size().reset_index(name='repo_count')\n", "\n", - "# Programming Languages by Repo Count\n", - "language_counts = df_languages.groupby(['language', 'repo']).size().reset_index(name='repo_count')\n", + "def create_language_figures(counts: pd.DataFrame, path_key: str, value_key: str):\n", + " _fig_treemap = px.treemap(\n", + " counts,\n", + " path=[path_key, 'repo'],\n", + " values=value_key,\n", + " )\n", + " _fig_sunburst = px.sunburst(\n", + " counts,\n", + " path=[path_key, 'repo'],\n", + " values=value_key,\n", + " )\n", + " return _fig_treemap, _fig_sunburst\n", "\n", - "fig_treemap = px.treemap(\n", - " language_counts,\n", - " path=['language', 'repo'],\n", - " values='repo_count',\n", - " title='Programming Languages by Repo Count (Treemap)',\n", - " hover_data={'repo_count': True}\n", - ")\n", - "fig_treemap.show()" + "# List of tuples containing the data and titles for each figure\n", + "figures_data = [\n", + " (language_counts_bytes, 'language', 'bytes_of_code', 'Programming Languages by Bytes of Code'),\n", + " (language_counts_repos, 'language', 'repo_count', 'Programming Languages by Repo Count')\n", + "]\n", + "\n", + "# Loop through the list to create figures and add traces\n", + "for _counts, _path_key, value_key, title in figures_data:\n", + " fig_treemap, fig_sunburst = create_language_figures(counts=_counts, path_key=_path_key, value_key=value_key)\n", + "\n", + " fig = go.Figure()\n", + " fig.add_trace(fig_treemap.data[0])\n", + " fig.add_trace(fig_sunburst.data[0])\n", + " fig.data[1].visible = False\n", + "\n", + " fig.update_layout(\n", + " title=title,\n", + " updatemenus=[\n", + " {\n", + " \"buttons\": [\n", + " {\n", + " \"label\": \"Treemap\",\n", + " \"method\": \"update\",\n", + " \"args\": [\n", + " {\"visible\": [True, False]},\n", + " ],\n", + " },\n", + " {\n", + " \"label\": \"Sunburst\",\n", + " \"method\": \"update\",\n", + " \"args\": [\n", + " {\"visible\": [False, True]},\n", + " ],\n", + " },\n", + " ],\n", + " \"direction\": \"down\",\n", + " \"showactive\": True,\n", + " }\n", + " ]\n", + " )\n", + "\n", + " fig.show()" ], "id": "20e09d93eda0478a", "outputs": [], @@ -547,7 +585,12 @@ "id": "a520a320cd823874" }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-08-20T02:58:06.219404Z", + "start_time": "2024-08-20T02:58:06.066344Z" + } + }, "cell_type": "code", "source": [ "# Docs\n", @@ -563,33 +606,2528 @@ "\n", "df_docs = pd.DataFrame(docs_data)\n", "\n", - "# Aggregate data by has_readme and repo\n", + "# Aggregate data by has_readme/has_readthedocs and repo\n", "readme_counts = df_docs.groupby(['has_readme', 'repo']).size().reset_index(name='repo_count')\n", + "readthedocs_counts = df_docs.groupby(['has_readthedocs', 'repo']).size().reset_index(name='repo_count')\n", "\n", - "# Visualize the data using a treemap\n", - "fig_treemap_readme = px.treemap(\n", - " readme_counts,\n", - " path=['has_readme', 'repo'],\n", - " values='repo_count',\n", - " title='Has README file',\n", - ")\n", - "fig_treemap_readme.show()\n", + "def create_figures(counts: pd.DataFrame, path_key: str):\n", + " _fig_treemap = px.treemap(\n", + " counts,\n", + " path=[path_key, 'repo'],\n", + " values='repo_count',\n", + " )\n", + " _fig_sunburst = px.sunburst(\n", + " counts,\n", + " path=[path_key, 'repo'],\n", + " values='repo_count',\n", + " )\n", + " return _fig_treemap, _fig_sunburst\n", "\n", - "# Aggregate data by has_readthedocs and repo\n", - "readthedocs_counts = df_docs.groupby(['has_readthedocs', 'repo']).size().reset_index(name='repo_count')\n", + "# List of tuples containing the data and titles for each figure\n", + "figures_data = [\n", + " (readme_counts, 'has_readme', 'Has README file'),\n", + " (readthedocs_counts, 'has_readthedocs', 'Uses ReadTheDocs')\n", + "]\n", "\n", - "# Visualize the data using a treemap\n", - "fig_treemap_readthedocs = px.treemap(\n", - " readthedocs_counts,\n", - " path=['has_readthedocs', 'repo'],\n", - " values='repo_count',\n", - " title='Uses ReadTheDocs',\n", - ")\n", - "fig_treemap_readthedocs.show()" + "# Loop through the list to create figures and add traces\n", + "for _counts, _path_key, title in figures_data:\n", + " fig_treemap, fig_sunburst = create_figures(counts=_counts, path_key=_path_key)\n", + "\n", + " fig = go.Figure()\n", + " fig.add_trace(fig_treemap.data[0])\n", + " fig.add_trace(fig_sunburst.data[0])\n", + " fig.data[1].visible = False\n", + "\n", + " fig.update_layout(\n", + " title=title,\n", + " updatemenus=[\n", + " {\n", + " \"buttons\": [\n", + " {\n", + " \"label\": \"Treemap\",\n", + " \"method\": \"update\",\n", + " \"args\": [{\"visible\": [True, False]}],\n", + " },\n", + " {\n", + " \"label\": \"Sunburst\",\n", + " \"method\": \"update\",\n", + " \"args\": [{\"visible\": [False, True]}],\n", + " },\n", + " ],\n", + " \"direction\": \"down\",\n", + " \"showactive\": True,\n", + " }\n", + " ]\n", + " )\n", + "\n", + " fig.show()" ], "id": "ec43a8fd7f9d49bb", - "outputs": [], - "execution_count": null + "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 } ], "metadata": {