{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "(growth)=\n", "# Growth\n", "\n", "Growth plays an important role in the development of projects and the greater ecosystem. We can detect some emerging topics by examining the growth rates of [stars](./popularity.ipynb) over the last year. The topic of green software is growing in popularity, also known as \"green computing\". Its concern is the lowering of energy consumption, carbon intensity, and environmental impact of programming languages and applications. With over 97% of the world's applications now using open source, this clearly affects energy usage and efficiency worldwide.1\n", "\n", "Projects like [Kepler](https://github.com/sustainable-computing-io/kepler), [kube-green](https://github.com/kube-green/kube-green), [Scaphandre](https://github.com/hubblo-org/scaphandre), [Cloud Carbon Footprint](https://www.cloudcarbonfootprint.org/), [Software Carbon Intensity Specification](https://greensoftware.foundation/projects/), and [CodeCarbon](https://codecarbon.io/) demonstrating the growth within this new topic. This trend is partially driven by new collaborative communities, such as the [Green Software Foundation](https://greensoftware.foundation), which is supported by major software companies. The ambitious climate targets of companies like Google and Microsoft may be a contributing factor to this trend. Levels of access and participation may also play a role, as green software typically has a lower barrier to entry for general software developers than other topics.\n", "\n", "\n", "`````{admonition} Tip\n", ":class: tip\n", "Click on the project names to go directly to the repositories.\n", "`````" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import plotly.io as pio\n", "import plotly.graph_objects as go\n", "import plotly.express as px\n", "from opensustainTemplate import *" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "df_active = pd.read_csv(\"../csv/project_analysis.csv\")\n", "df_active[\"project_name\"] = df_active[\"project_name\"].replace(\n", " {\n", " \"A Global Inventory of Commerical-, Industrial-, and Utility-Scale Photovoltaic Solar Generating Units\": \"A Global Inventory of Photovoltaic\"\n", " }\n", ")\n", "df_active[\"project_name\"] = df_active[\"project_name\"].replace(\n", " {\n", " \"Asset-level Transition Risk in the Global Coal, Oil, and Gas Supply Chains\": \"Global Coal, Oil, and Gas Supply Chains\"\n", " }\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "customdata": [ [ "Uses eBPF to probe energy related system stats and exports as Prometheus metrics.", "Computation and Communication", "https://github.com/sustainable-computing-io/kepler.git" ], [ "A k8s operator to reduce CO2 footprint of your clusters.", "Computation and Communication", "https://github.com/kube-green/kube-green.git" ], [ "Global land surface temperature and emissivity from NASA's Landsat satellite images.", "Earth and Climate Modeling", "https://github.com/pylandtemp/pylandtemp.git" ], [ "The global fossil fuel supply chain, mapped at the asset-level.", "Energy Modeling and Optimization", "https://github.com/Lkruitwagen/global-fossil-fuel-supply-chain.git" ], [ "A specification that describes how to calculate a carbon intensity for software applications.", "Computation and Communication", "https://github.com/Green-Software-Foundation/software_carbon_intensity.git" ], [ "A npm module for accessing the green web API, and estimating the carbon emissions from using digital services.", "Computation and Communication", "https://github.com/thegreenwebfoundation/co2.js.git" ], [ "Data on global energy consumption (primary energy, per capita, and growth rates), energy mix, electricity mix and other relevant metrics.", "Datasets on Energy Systems", "https://github.com/owid/energy-data.git" ], [ "An extensible EV Charge Controller with PV integration implemented in Go.", "Mobility and Transportation", "https://github.com/evcc-io/evcc.git" ], [ "Access and analyze historical weather and climate data with Python.", "Climate Data Processing and Access", "https://github.com/meteostat/meteostat-python.git" ], [ "Detecting plastic waste in the environment to combat environmental pollution and promote circular economy.", "Circular Economy and Waste", "https://github.com/wimlds-trojmiasto/detect-waste.git" ], [ "A tool to estimate energy use (kilowatt-hours) and carbon emissions (metric tons CO2e) from public cloud usage.", "Computation and Communication", "https://github.com/cloud-carbon-footprint/cloud-carbon-footprint.git" ], [ "Track emissions from Compute and recommend ways to reduce their impact on the environment.", "Computation and Communication", "https://github.com/mlco2/codecarbon.git" ], [ "Fast and flexible physics-based battery models in Python.", "Battery", "https://github.com/pybamm-team/PyBaMM.git" ], [ "Using Earth observations to address social, environmental and economic changes on the Africa continent.", "Data Catalogs and Interfaces", "https://github.com/digitalearthafrica/deafrica-sandbox-notebooks.git" ], [ "An open source software agent to track energy consumption of ICT services from the servers.", "Computation and Communication", "https://github.com/hubblo-org/scaphandre.git" ], [ "Used to produce a global inventory of utility-scale solar photvoltaic generating station.", "Photovoltaics and Solar Energy", "https://github.com/Lkruitwagen/solar-pv-global-inventory.git" ], [ "A middleware toolkit for building software-defined power meters.", "Computation and Communication", "https://github.com/powerapi-ng/powerapi.git" ], [ "Global weather API for non-commercial use with hourly weather forecast.", "Meteorological Observation and Forecast", "https://github.com/open-meteo/open-meteo.git" ], [ "Data on CO2 and greenhouse gas emissions by Our World in Data.", "Emission Observation and Modeling", "https://github.com/owid/co2-data.git" ], [ "Python implementation of the Open Charge Point Protocol.", "Mobility and Transportation", "https://github.com/mobilityhouse/ocpp.git" ], [ "Python library to train neural networks with a strong focus on hydrological applications.", "Water Supply and Quality", "https://github.com/neuralhydrology/neuralhydrology.git" ], [ "A Python package aiming at simplifying access to climate and meteorological datasets, allowing users to focus on science instead of technical issues such as data access and data formats.", "Climate Data Processing and Access", "https://github.com/ecmwf/climetlab.git" ], [ "A highly-configurable, open source electricity resource capacity expansion model that incorporates several state-of-the-art practices in electricity system planning to offer improved decision support for a changing electricity landscape.", "Energy Modeling and Optimization", "https://github.com/GenXProject/GenX.git" ], [ "Trying to make access to weather data in Python feel like a warm summer breeze.", "Meteorological Observation and Forecast", "https://github.com/earthobservations/wetterdienst.git" ], [ "Light-weight version of Aarhus RE Atlas for converting weather data to power systems data.", "Datasets on Energy Systems", "https://github.com/PyPSA/atlite.git" ], [ "A Python client for the ENTSO-E API (European Network of Transmission System Operators for Electricity).", "Datasets on Energy Systems", "https://github.com/EnergieID/entsoe-py.git" ], [ "A daemon for collecting measurement data from smart meters and grid inverters over modbus.", "Buildings and Heating", "https://github.com/volkszaehler/mbmd.git" ], [ "End-to-end algorithm to generate open water cover mask, specially conceived for L2A Sentinel 2 imagery from MAJA1 processor, without any a priori knowledge on the scene.", "Hydrosphere", "https://github.com/cordmaur/WaterDetect.git" ], [ "An open source Python application for downloading, processing, and delivering surface water maps derived from remote sensing data.", "Natural Hazard and Poverty", "https://github.com/Servir-Mekong/hydra-floods.git" ], [ "Aims to be the primary package used to analyze output from initialized dynamical forecast models, ranging from short-term weather forecasts to long-term climate forecasts.", "Earth and Climate Modeling", "https://github.com/pangeo-data/climpred.git" ], [ "Python Package for Tree Crown Detection in Airborne RGB imagery.", "Biosphere", "https://github.com/weecology/DeepForest.git" ], [ "Stands for CLIMate ADAptation and is a probabilistic natural catastrophe impact model, that also calculates averted damage (benefit) thanks to adaptation measures of any kind (from grey to green infrastructure, behavioural, etc.).", "Earth and Climate Modeling", "https://github.com/CLIMADA-project/climada_python.git" ], [ "Aims to provide multi-scale, simulation-based, open source computational tools and models to support the design, analysis, optimization, scale-up, operation and troubleshooting of innovative, advanced energy systems.", "Energy Modeling and Optimization", "https://github.com/IDAES/idaes-pse.git" ], [ "A Pythonic library to classify tree/non-tree pixels from aerial imagery.", "Biosphere", "https://github.com/martibosch/detectree.git" ], [ "An Open Optimization Model of the European Transmission System.", "Energy Distribution and Grids", "https://github.com/PyPSA/pypsa-eur.git" ], [ "Providing a structured database of claims regarding ecological state and change of state.", "Knowledge Platforms", "https://github.com/regen-network/regen-ledger.git" ], [ "Used for single event or long-term (continuous) simulation of runoff quantity and quality from primarily urban areas.", "Water Supply and Quality", "https://github.com/USEPA/Stormwater-Management-Model.git" ], [ "Compute your ML model's emissions with our calculator and add the results to your paper with our generated LaTeX template.", "Computation and Communication", "https://github.com/mlco2/impact.git" ], [ "Notebooks and documentation for AI-for-Earth-managed datasets on Azure.", "Data Catalogs and Interfaces", "https://github.com/microsoft/AIforEarthDataSets.git" ], [ "Official reinforcement learning environment for demand response and load shaping.", "Energy Modeling and Optimization", "https://github.com/intelligent-environments-lab/CityLearn.git" ] ], "hovertemplate": "Project Info: %{customdata[0]}
Topic: %{customdata[1]}
Git URL: %{customdata[2]}", "legendgroup": "", "marker": { "color": [ 0.6551724137931034, 0.1467576791808873, 0, 0.0329670329670329, 0.6666666666666667, 0.3316582914572864, 0.2802197802197802, 0.2349794238683127, 0.0344827586206896, 0.5168539325842696, 0.8300304878048781, 0.8112449799196787, 0.5718423372371237, 0.6462668298653611, 0.2347140039447731, 0.031578947368421, 0.4250645994832042, 0.0240963855421686, 0.5208333333333333, 0.3769230769230769, 0.5029940119760479, 0.4946386946386946, 0.6415094339622642, 0.3356258596973865, 0.6388888888888888, 0.6069651741293532, 0.3765432098765432, 0.237410071942446, 0.0961538461538461, 0.4441887226697353, 0.5714285714285714, 0.6562810739144846, 0.7442307692307693, 0.0166666666666667, 0.6205405405405405, 0.7323767935121647, 0.0413793103448275, 0.2197802197802197, 0.1142857142857143, 0.2052631578947368 ], "coloraxis": "coloraxis", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "h", "showlegend": false, "textposition": "auto", "type": "bar", "x": [ 100, 92.33128834355828, 91.37931034482759, 88.81987577639751, 84.61538461538461, 77.14285714285715, 70.22900763358778, 62.715765247410815, 59.27835051546392, 58.252427184466015, 56.96649029982363, 52.98507462686567, 52.25806451612903, 49.504950495049506, 48.34123222748815, 48.07692307692308, 46.07843137254902, 45.796064400715565, 45.05813953488372, 44.59833795013851, 44.505494505494504, 42.857142857142854, 42.7536231884058, 41.78403755868544, 40.78947368421053, 40.43478260869565, 40.28776978417266, 40.15151515151515, 39.83050847457627, 39.77272727272727, 39.61661341853035, 39.56043956043956, 39.0625, 38.333333333333336, 38.2716049382716, 37.91208791208791, 37.878787878787875, 37.38317757009346, 37.264150943396224, 36.971830985915496 ], "xaxis": "x", "y": [ "Kepler", "kube-green", "pylandtemp", "Global Coal, Oil, and Gas Supply Chains", "Software Carbon Intensity Specification", "co2.js", "energy-data", "EVCC", "Meteostat Python", "Detect waste", "Cloud Carbon Footprint", "CodeCarbon", "PyBaMM", "Digital Earth Africa Notebooks", "Scaphandre", "A Global Inventory of Photovoltaic", "PowerAPI", "Open-Meteo", "co2-data", "ocpp", "NeuralHydrology", "climetlab", "GenX", "wetterdienst", "atlite", "entsoe-py", "ModBus Measurement Daemon", "WaterDetect", "HYDRAFloods", "climpred", "DeepForest", "CLIMADA", "The IDAES Toolkit", "DetecTree", "PyPSA-Eur", "Regen Ledger", "Stormwater-Management-Model", "impact", "AI for Earth Data Sets", "CityLearn" ], "yaxis": "y" } ], "layout": { "barmode": "relative", "coloraxis": { "colorbar": { "orientation": "h", "title": { "text": "Development Distribution Score" }, "y": -0.2 }, "colorscale": [ [ 0, "rgb(237, 239, 93)" ], [ 0.16666666666666666, "rgb(169, 220, 103)" ], [ 0.3333333333333333, "rgb(110, 197, 116)" ], [ 0.5, "rgb(57, 171, 126)" ], [ 0.6666666666666666, "rgb(13, 143, 129)" ], [ 0.8333333333333334, "rgb(15, 114, 121)" ], [ 1, "rgb(36, 86, 104)" ] ] }, "dragmode": false, "height": 900, "hoverlabel": { "bgcolor": "white" }, "images": [ { "sizex": 0.05, "sizey": 0.05, "source": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAD20lEQVR4nO2ZTWgcZRjHf8/spjWkFYmKmbR+oVKaCPbQU8i2tCBqEbrU7LIJVhG0PVWQih4UehAVQVAkAQ/qRW1WdhPrB+pJ1DQF6aEnQ0WqqCQbhfpFW6nJzOMhBgQ3u+/MvPORmP91n/n/nx/v7DvPvCOqyv9JTtoNJK114LWufBIh5TIbZj3uQLldhJtV2CJwlfrkpicpJtHDsmIDHtzPZjo4gM8IQkGgE1n6Tf7ZJ0W4HFf+SrIOvLvI9YsORyXPwyhdy5BZkTXgwf1s1jzHJMejAh22fG3LCnDhAHeT53WBXht+cSoS8J495Beu5nmEo5C1m7e5QgPv28fGxW7eQhmy2VDcCgV81wN0XezkE2DQcj+xKzDwzsN0XHGJGqsQFkJMWp3nGUO5J45mklCgFS7cx0GFRyzk/izCT6p8Z8ErkMT09XCgzBZnkRmEK0NmTaswicd70+9yLqRHZBmvcM7jZQ0He1qEZ6bqfBDiWusyWuGBEgOOz3RAb1+Ep05O8IIqmTllMFphR3k6oO8FUYanJvgwRE+xqu0K7yrT53t8FcDTE6U4NZk9WDB4LKnHg0EMVXgiq7DQBlgEAUYC+H15aoKXorUUr1oCF0psV9hqaibK41naoJqpJbDvs9fYSflsapKTkTuKWa3/w8oOUyOBetRmklC7TWuboY86Pu9HbSYJtQO+0dDn/Ocn+DFqM0mo9S6N8Sg5Z6GXRNRy0lIYUyHXzkSUb+y1FK+M35bWitY/tSQhaVQvAxvaV+oX6g7vtpmd1gpfMCsT13ZwWsC/GdZZP9hPCVi/NSzsktnjO2wmpwOs8rVxrThFm9HpADt62rhWGBKLn3HSAfbl0wDV/cxVy7aiUxs8pFGdAbYblp/j11yf9pX+ipqb5uBxPEDtLXT7L9oITRHYfxPwjMtVj0jjnUNRU1MDVnfkeyTooYGOSmP8cJTcdGfpRX0OAp2BdYC8KnPVUZmpGYym/1Xqb0syP/4GKg+FuPQHkGdxz76mHPON89IHrl2LemeB7nAOOoNSBzmhvZUzbfPSBgaQ+eoQSs2C1Z8IsygNdSu7mhVk4n1Yeyp1lDELVp0otwKFlQoyAQxA7x+PAR/HHZMZYOXQAs5CCTgVZ05mgAH0uoMXYdOdIB/FlZEpYAB1772E+3sRYTQO/8wBw9LtrT2VIwgl4Beb3pkEXpb2VOp4uduAVwDj4aKVMvEcNpHMj/ej8iQwjMFpq7qVpocGqwZ4WdKo3QDe/Sx9qO9fqW7NAP9bMvv2VnL5vcBOVLcBNwHXAJvUrWxses1qBg6jTG9acWgdeK3rb5uuGEmTzESgAAAAAElFTkSuQmCC", "x": 1, "xanchor": "right", "xref": "paper", "y": 0, "yanchor": "bottom", "yref": "paper" } ], "legend": { "tracegroupgap": 0 }, "margin": { "b": 0, "l": 0, "r": 0, "t": 40 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "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" ] ], "sequential": [ [ 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, "#f0f921" ] ], "sequentialminus": [ [ 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, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#040404", "family": "Open Sans", "size": 15 }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "margin": { "b": 0 }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "font": { "color": "#040404", "family": "Open Sans" }, "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Projects with the highest star growth" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "range": [ 30, 100 ], "title": { "text": "Star growth last year [%]" } }, "yaxis": { "anchor": "x", "autorange": "reversed", "domain": [ 0, 1 ], "title": {} } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define chart title to be used in fig and as file name in export\n", "chart_title = \"Star growth last year [%]\"\n", "\n", "df_top_100_stargazers = df_active[(df_active[\"stargazers_count\"]) > 100].copy()\n", "df_top_100_stargazers[\"star_growth\"] = (\n", " df_top_100_stargazers[\"stars_last_year\"] / df_top_100_stargazers[\"stargazers_count\"]\n", ")\n", "\n", "df_top_40_star_growth = df_top_100_stargazers.nlargest(40, \"star_growth\")\n", "fig = px.bar(\n", " df_top_40_star_growth,\n", " x=df_top_40_star_growth[\"star_growth\"] * 100,\n", " y=df_top_40_star_growth[\"project_name\"],\n", " orientation=\"h\",\n", " custom_data=[\"oneliner\", \"topic\", \"git_url\"],\n", " color=df_top_40_star_growth[\"development_distribution_score\"],\n", " color_continuous_scale=color_continuous_scale,\n", ")\n", "\n", "fig.update_layout(\n", " height=1000,\n", " #width=700,\n", " xaxis_title=chart_title,\n", " yaxis_title=None,\n", " title=\"Projects with the highest star growth\",\n", " hoverlabel=dict(bgcolor=\"white\"),\n", " coloraxis_colorbar=dict(\n", " title='DDS',\n", " orientation='h',\n", " y=-0.2\n", " ),\n", " xaxis_range=[30, 100],\n", " dragmode=False,\n", ")\n", "\n", "fig.update_traces(\n", " hovertemplate=\"
\".join(\n", " [\n", " \"Project Info: %{customdata[0]}\",\n", " \"Topic: %{customdata[1]}\",\n", " \"Git URL: %{customdata[2]}\",\n", " ]\n", " )\n", ")\n", "\n", "fig.add_layout_image(\n", " dict(\n", " source=logo_img,\n", " xref=\"paper\",\n", " yref=\"paper\",\n", " x=1,\n", " y=0,\n", " sizex=0.05,\n", " sizey=0.05,\n", " xanchor=\"right\",\n", " yanchor=\"bottom\",\n", " )\n", ")\n", "\n", "\n", "# Override the save image button’s options\n", "config = {'responsive': True, \n", " 'toImageButtonOptions':{\n", " 'width': 1000,\n", " 'height': 1000,\n", " 'format': 'png',\n", " 'filename': chart_title}}\n", "\n", "fig[\"layout\"].update(margin=dict(l=0, r=0, b=0, t=40))\n", "fig[\"layout\"][\"yaxis\"][\"autorange\"] = \"reversed\"\n", "config = {\n", " 'toImageButtonOptions': {\n", " 'format': 'svg', # one of png, svg, jpeg, webp\n", " },\n", " 'responsive':'true'\n", "}\n", "fig.show(config=config)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\n", ":figclass: caption-hack\n", ":name: star-growth\n", "\n", "\\- The 40 projects with highest star growth\n", "```" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Another way to look at project growth is in relation to total commits over the past year. The number of commits created within a given timeframe highly depends on the project type. For example, a web platform with a large codebase tends to go hand-in-hand with a high volume of commits compared with projects centred on data analysis. Meanwhile, software tools that are dependencies of many other projects are more likely to see a high frequency of commits and sustained growth, as there is an incentive to maintain the codebase to avoid bugs and breaking changes. However, for this reason, high growth can also be considered a risk. Within this ecosystem, both relatively young and large, widely known projects can be seen with high commit growth. These include [xclim](https://github.com/Ouranosinc/xclim), a library of derived climate variables; [InVEST](https://github.com/natcap/invest), an Natural Capital Project model used to \"map and value the goods and services from nature that sustain and fulfil human life\"; and [Energy Sparks](https://github.com/Energy-Sparks/energy-sparks), which is designed to help schools improve their energy efficiency. However, as with other growth metrics, this metric can be misleading for a number of reasons and may not reflect the quality of growth." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "customdata": [ [ "A whole building energy simulation program that engineers, architects, and researchers use to model both energy consumption and water usage in buildings.", "Buildings and Heating", "https://github.com/NREL/EnergyPlus.git" ], [ "A global atmosphere model targeted towards 3 km (\"cloud resolving\") resolution.", "Atmosphere", "https://github.com/E3SM-Project/scream.git" ], [ "Fast and friendly fluid dynamics on CPUs and GPUs.", "Hydrosphere", "https://github.com/CliMA/Oceananigans.jl.git" ], [ "An online marketplace for local food. It enables a network of independent online food stores that connects farmers and food hubs with individuals and local businesses.", "Agriculture and Nutrition", "https://github.com/openfoodfoundation/openfoodnetwork.git" ], [ "Accelerate the attainment of the sustainable development goals in low- and middle-income countries by facilitating the discovery, development, use of, and investment in digital public goods.", "Knowledge Platforms", "https://github.com/DPGAlliance/publicgoods-candidates.git" ], [ "Modeling of residential buildings in EnergyPlus using OpenStudio/HPXML.", "Buildings and Heating", "https://github.com/NREL/OpenStudio-HPXML.git" ], [ "A library of derived climate variables, i.e. climate indicators, based on xarray.", "Climate Data Processing and Access", "https://github.com/Ouranosinc/xclim.git" ], [ "Fast and flexible physics-based battery models in Python.", "Battery", "https://github.com/pybamm-team/PyBaMM.git" ], [ "A modular open source multi-regional model incorporating the economy, the climate system and a detailed representation of the energy sector.", "Sustainable Investment", "https://github.com/remindmodel/remind.git" ], [ "A state-of-the-art fully coupled model of the Earth's climate including important biogeochemical and cryospheric processes.", "Earth and Climate Modeling", "https://github.com/E3SM-Project/E3SM.git" ], [ "A cross-platform collection of software tools to support whole building energy modeling using EnergyPlus and advanced daylight analysis using Radiance.", "Buildings and Heating", "https://github.com/NREL/OpenStudio.git" ], [ "An open source application that is designed to help schools improve their energy efficiency.", "Energy Monitoring and Control", "https://github.com/Energy-Sparks/energy-sparks.git" ], [ "An integrated web-based workbench for taxonomists and biodiversity scientists.", "Biosphere", "https://github.com/SpeciesFileGroup/taxonworks.git" ], [ "An Open Optimisation Model of the Earth Energy System.", "Energy Modeling and Optimization", "https://github.com/pypsa-meets-earth/pypsa-earth.git" ], [ "A family of tools for quantifying the values of natural capital in clear, credible, and practical ways.", "Sustainable Investment", "https://github.com/natcap/invest.git" ], [ "An agricultural modeling framework used extensively worldwide.", "Agriculture and Nutrition", "https://github.com/APSIMInitiative/ApsimX.git" ], [ "Standard Energy Efficiency Data Platform™ is a web-based application that helps organizations easily manage data on the energy performance of large groups of buildings.", "Buildings and Heating", "https://github.com/SEED-platform/seed.git" ], [ "Helping states, municipalities, utilities, and manufacturers identify which building stock improvements save the most energy and money.", "Buildings and Heating", "https://github.com/NREL/resstock.git" ], [ "Model of Agricultural Production and its Impact on the Environment.", "Agriculture and Nutrition", "https://github.com/magpiemodel/magpie.git" ], [ "Hyperspectral Image Classification with Attention Aided CNNs.", "Biosphere", "https://github.com/weecology/DeepTreeAttention.git" ], [ "Code of the Carbon Accounting and Certification Working Group.", "Carbon Intensity and Accounting", "https://github.com/opentaps/blockchain-carbon-accounting.git" ], [ "Forecast the US demand for electricity.", "Energy Modeling and Optimization", "https://github.com/RamiKrispin/USelectricity.git" ], [ "System for Earth Observation Data Access, Processing and Analysis for Land Monitoring.", "Biosphere", "https://github.com/openforis/sepal.git" ], [ "The Framework for Modeling Behavior, Energy, Autonomy, and Mobility in Transportation Systems.", "Mobility and Transportation", "https://github.com/LBNL-UCB-STI/beam.git" ], [ "Optimization of Aerodynamic systems.", "Wind Energy", "https://github.com/OpenMDAO/OpenMDAO.git" ], [ "An interface to download and deploy interconnected, grid-aware energy marketplaces.", "Energy Distribution and Grids", "https://github.com/gridsingularity/gsy-e.git" ], [ "The Predictive Ecosystem Analyzer is an integrated ecological bioinformatics toolbox.", "Biosphere", "https://github.com/PecanProject/pecan.git" ], [ "A collaborative website for better access to data and models in the hydrologic sciences.", "Hydrosphere", "https://github.com/hydroshare/hydroshare.git" ], [ "A simulation program for electricity generation projects. It has models for different kinds of renewable energy systems and financial models for residential, commercial, and utility-scale projects.", "Energy Modeling and Optimization", "https://github.com/NREL/SAM.git" ], [ "Facilitates research and analysis on complex topics in collaboration with partners, to make ESG data open, comparable and useful for all.", "Sustainable Investment", "https://github.com/wikirate/wikirate.git" ], [ "A domain ontology of the energy-system modeling context.", "Energy Modeling and Optimization", "https://github.com/OpenEnergyPlatform/ontology.git" ], [ "A radiative transfer model for the millimeter and sub-millimeter spectral range.", "Radiative Transfer", "https://github.com/atmtools/arts.git" ], [ "A modular, extensible, industrial-strength and field-tested platform for use in electricity, water and other utility operations.", "Energy Monitoring and Control", "https://github.com/opfab/operatorfabric-core.git" ], [ "The Super Resolution for Renewable Resource Data software uses generative adversarial networks to create synthetic high-resolution wind and solar spatiotemporal data from coarse low-resolution inputs.", "Datasets on Energy Systems", "https://github.com/NREL/sup3r.git" ], [ "Enables users to apply machine learning techniques for classifying image time series obtained from earth observation data cubes.", "Soil and Land", "https://github.com/e-sensing/sits.git" ], [ "An extensible EV Charge Controller with PV integration implemented in Go.", "Mobility and Transportation", "https://github.com/evcc-io/evcc.git" ], [ "A tool capable of modeling walking and cycling accessibility.", "Mobility and Transportation", "https://github.com/goat-community/goat.git" ], [ "A Julia package for power system modeling and simulation of Power Systems operations.", "Energy Modeling and Optimization", "https://github.com/NREL-SIIP/PowerSimulations.jl.git" ], [ "The Biorefinery Simulation and Techno-Economic Analysis Modules.", "Bioenergy", "https://github.com/BioSTEAMDevelopmentGroup/biosteam.git" ] ], "hovertemplate": "Project Info: %{customdata[0]}
Topic: %{customdata[1]}
Git URL: %{customdata[2]}", "legendgroup": "", "marker": { "color": [ 0.8557953408603687, 0.8919941420551623, 0.6231042271700549, 0.857922954725973, 0.4561806352851129, 0.4672614038040734, 0.6206239580852584, 0.5718423372371237, 0.7894959762812368, 0.8774051285699043, 0.7263712214471345, 0.6436013061732235, 0.6788910077746809, 0.7256983240223464, 0.6427733065057009, 0.6563488670371953, 0.7676632455748922, 0.3927148548662492, 0.7343799058084772, 0.0027118644067796, 0.5861733203505355, 0, 0.4860553324408746, 0.8218543046357616, 0.6906206252916472, 0.7478344562078922, 0.8638583638583639, 0.7481049054631002, 0.6591089896579156, 0.3741563248421511, 0.6768342951360264, 0.5420353982300885, 0.7969543147208122, 0.3086003372681282, 0.6461273666092944, 0.2349794238683127, 0.5708897270911915, 0.269703656998739, 0.1261437908496732 ], "coloraxis": "coloraxis", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "h", "showlegend": false, "textposition": "auto", "type": "bar", "x": [ 4074, 3729, 3278, 2875, 2333, 2030, 2011, 1943, 1827, 1811, 1770, 1761, 1745, 1721, 1646, 1619, 1610, 1534, 1522, 1493, 1468, 1433, 1426, 1401, 1399, 1373, 1365, 1346, 1327, 1326, 1287, 1279, 1277, 1273, 1221, 1201, 1197, 1127, 1105 ], "xaxis": "x", "y": [ "EnergyPlus", "SCREAM", "Oceananigans.jl", "openfoodnetwork", "Digital Public Goods", "OpenStudio-HPXML", "xclim", "PyBaMM", "REMIND", "E3SM", "OpenStudio", "energy-sparks", "TaxonWorks", "PyPSA-Earth", "InVEST", "ApsimX", "SEED", "resstock", "MAgPIE", "DeepTreeAttention", "blockchain-carbon-accounting", "USelectricity", "SEPAL", "BEAM", "OpenMDAO", "Grid Singularity Energy Exchange", "PEcAn", "HydroShare", "System Advisor Model", "WikiRate", "The Open Energy Ontology", "ARTS", "OperatorFabric", "sup3r", "SITS", "EVCC", "goat", "PowerSimulations.jl", "biosteam" ], "yaxis": "y" } ], "layout": { "barmode": "relative", "coloraxis": { "colorbar": { "orientation": "h", "title": { "text": "Development Distribution Score" }, "y": -0.15 }, "colorscale": [ [ 0, "rgb(237, 239, 93)" ], [ 0.16666666666666666, "rgb(169, 220, 103)" ], [ 0.3333333333333333, "rgb(110, 197, 116)" ], [ 0.5, "rgb(57, 171, 126)" ], [ 0.6666666666666666, "rgb(13, 143, 129)" ], [ 0.8333333333333334, "rgb(15, 114, 121)" ], [ 1, "rgb(36, 86, 104)" ] ] }, "dragmode": false, "height": 1000, "hoverlabel": { "bgcolor": "white" }, "images": [ { "sizex": 0.05, "sizey": 0.05, "source": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAD20lEQVR4nO2ZTWgcZRjHf8/spjWkFYmKmbR+oVKaCPbQU8i2tCBqEbrU7LIJVhG0PVWQih4UehAVQVAkAQ/qRW1WdhPrB+pJ1DQF6aEnQ0WqqCQbhfpFW6nJzOMhBgQ3u+/MvPORmP91n/n/nx/v7DvPvCOqyv9JTtoNJK114LWufBIh5TIbZj3uQLldhJtV2CJwlfrkpicpJtHDsmIDHtzPZjo4gM8IQkGgE1n6Tf7ZJ0W4HFf+SrIOvLvI9YsORyXPwyhdy5BZkTXgwf1s1jzHJMejAh22fG3LCnDhAHeT53WBXht+cSoS8J495Beu5nmEo5C1m7e5QgPv28fGxW7eQhmy2VDcCgV81wN0XezkE2DQcj+xKzDwzsN0XHGJGqsQFkJMWp3nGUO5J45mklCgFS7cx0GFRyzk/izCT6p8Z8ErkMT09XCgzBZnkRmEK0NmTaswicd70+9yLqRHZBmvcM7jZQ0He1qEZ6bqfBDiWusyWuGBEgOOz3RAb1+Ep05O8IIqmTllMFphR3k6oO8FUYanJvgwRE+xqu0K7yrT53t8FcDTE6U4NZk9WDB4LKnHg0EMVXgiq7DQBlgEAUYC+H15aoKXorUUr1oCF0psV9hqaibK41naoJqpJbDvs9fYSflsapKTkTuKWa3/w8oOUyOBetRmklC7TWuboY86Pu9HbSYJtQO+0dDn/Ocn+DFqM0mo9S6N8Sg5Z6GXRNRy0lIYUyHXzkSUb+y1FK+M35bWitY/tSQhaVQvAxvaV+oX6g7vtpmd1gpfMCsT13ZwWsC/GdZZP9hPCVi/NSzsktnjO2wmpwOs8rVxrThFm9HpADt62rhWGBKLn3HSAfbl0wDV/cxVy7aiUxs8pFGdAbYblp/j11yf9pX+ipqb5uBxPEDtLXT7L9oITRHYfxPwjMtVj0jjnUNRU1MDVnfkeyTooYGOSmP8cJTcdGfpRX0OAp2BdYC8KnPVUZmpGYym/1Xqb0syP/4GKg+FuPQHkGdxz76mHPON89IHrl2LemeB7nAOOoNSBzmhvZUzbfPSBgaQ+eoQSs2C1Z8IsygNdSu7mhVk4n1Yeyp1lDELVp0otwKFlQoyAQxA7x+PAR/HHZMZYOXQAs5CCTgVZ05mgAH0uoMXYdOdIB/FlZEpYAB1772E+3sRYTQO/8wBw9LtrT2VIwgl4Beb3pkEXpb2VOp4uduAVwDj4aKVMvEcNpHMj/ej8iQwjMFpq7qVpocGqwZ4WdKo3QDe/Sx9qO9fqW7NAP9bMvv2VnL5vcBOVLcBNwHXAJvUrWxses1qBg6jTG9acWgdeK3rb5uuGEmTzESgAAAAAElFTkSuQmCC", "x": 1, "xanchor": "right", "y": 0, "yanchor": "bottom" } ], "legend": { "tracegroupgap": 0 }, "margin": { "b": 0, "l": 0, "r": 0, "t": 40 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 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, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "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" ] ], "sequential": [ [ 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, "#f0f921" ] ], "sequentialminus": [ [ 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, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#040404", "family": "Open Sans", "size": 15 }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "margin": { "b": 0 }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "font": { "color": "#040404", "family": "Open Sans" }, "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Projects with the highest commit growth" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "range": [ 1000, 4200 ], "title": { "text": "Commit growth last year [%]" } }, "yaxis": { "anchor": "x", "autorange": "reversed", "domain": [ 0, 1 ], "title": {} } } } }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df_top_40_growth = df_active.nlargest(40, \"total_commits_last_year\")\n", "## This projects does create a lot of automate commits\n", "df_top_40_growth = df_top_40_growth[\n", " df_top_40_growth[\"git_url\"] != \"https://github.com/OSUKED/ElexonDataPortal.git\"\n", "]\n", "\n", "fig = px.bar(\n", " df_top_40_growth,\n", " x=df_top_40_growth[\"total_commits_last_year\"],\n", " y=df_top_40_growth[\"project_name\"],\n", " orientation=\"h\",\n", " color=df_top_40_growth[\"development_distribution_score\"],\n", " custom_data=[\"oneliner\", \"topic\", \"git_url\"],\n", " color_continuous_scale=color_continuous_scale,\n", ")\n", "fig.add_layout_image(\n", " dict(\n", " source=logo_img,\n", " x=1,\n", " y=0,\n", " sizex=0.05,\n", " sizey=0.05,\n", " xanchor=\"right\",\n", " yanchor=\"bottom\",\n", " )\n", ")\n", "\n", "fig.update_layout(\n", " height=1000, # Added parameter\n", " #width=700,\n", " xaxis_title=\"Commit growth last year [%]\",\n", " yaxis_title=None,\n", " title=\"Projects with the highest commit growth\",\n", " coloraxis_colorbar=dict(\n", " title='DDS',\n", " orientation='h',\n", " y=-0.15\n", " ),\n", " hoverlabel=dict(\n", " bgcolor=\"white\",\n", " ),\n", " dragmode=False,\n", " xaxis_range=[1000, 4200],\n", ")\n", "fig[\"layout\"].update(margin=dict(l=0, r=0, b=0, t=40))\n", "\n", "fig.update_traces(\n", " hovertemplate=\"
\".join(\n", " [\n", " \"Project Info: %{customdata[0]}\",\n", " \"Topic: %{customdata[1]}\",\n", " \"Git URL: %{customdata[2]}\",\n", " ]\n", " )\n", ")\n", "fig[\"layout\"][\"yaxis\"][\"autorange\"] = \"reversed\"\n", "config = {\n", " 'toImageButtonOptions': {\n", " 'format': 'svg', # one of png, svg, jpeg, webp\n", " },\n", " 'responsive':'true'\n", "}\n", "fig.show(config=config)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "```{figure} data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\n", ":figclass: caption-hack\n", ":name: commit-growth\n", "\n", "\\- The 40 projects with highest commit growth\n", "```" ] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3", "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.8.10 (default, Nov 14 2022, 12:59:47) \n[GCC 9.4.0]" }, "tags": "full-width", "vscode": { "interpreter": { "hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a" } } }, "nbformat": 4, "nbformat_minor": 4 }