Generate SVG (dark/light) images visualizing (private/public) GitHub repo statistics for profile/website.

Overview

GitHub Stats Visualization

Generate daily updated visualizations of GitHub user and repository statistics from the GitHub API using GitHub Actions for any combination of private and public repositories, whether owned or contributed to - no server required.

GitStats Overview - LightGitStats Overview - DarkGitStats Languages - LightGitStats Languages - Dark

This is a modification of jstrieb/github-stats with many additional statistics, options and dark mode support

By default, statistical data for GitHub repositories an authenticated user either owns, has collaborative access to, or has otherwise contributed to are fetched from the GitHub API for visualization.

Forked repositories are excluded by default. However, there are many options provided for including or excluding any repository and more using: Statistics Options.

Regardless of which repositories are included, the generated All-time GitHub contributions given statistic will always represent all GitHub contributions by the user.

It seems that view and clone statistical data for repositories that an authenticated user neither owns nor has collaborative access to are not included in the generated statistics being visualized.

It also seems that statistics for contributions to GitHub repositories that an authenticated user neither owns nor has collaborative access to possibly only includes repositories that exist on GitHub before the contributions do. Contribution statistics for repositories uploaded to GitHub after the contributions are made, so long that the configured commit email is associated with the user's GitHub account, can be included in the statistic visualizations by manually including the repository using the MORE_REPOS secret option in Statistics Options.

Instructions

Click to view step-by-step instructions for generating your own GitHub statistics visualizations

Copy Repository

  1. Click the link to: Create your own copy of this repository for viewing your GitHub stats

    • Note: the first GitHub Actions workflow initiated at creation of the copied repository is expected to fail

Generate a New Personal Access Token

  1. Generate a personal access token by following these steps:
    1. If you are logged in, click this link to: generate a new token
    2. Name the token
    3. Select your preferred 'Expiration' date
    4. Select repo for 'Full control of private repositories'
    5. Select read:user to 'Read ALL user profile data'
    6. Click the 'Generate token' button
    7. Copy the generated token - there is only one opportunity provided for this

Create ACCESS_TOKEN Secret

  1. Create a repository secret for the personal access token by following these steps:
    1. If this is your copy of the repository, click this link to: create a new secret
      • Otherwise, go to repository Settings, click the Secrets option, then click New repository secret
    2. Name the new secret: ACCESS_TOKEN
    3. Enter the generated personal access token as the 'Value'

Run GitHub Actions Workflow

  1. Manually generate GitHub statistics visualizations:
    1. This can be done using any of the following two GitHub Actions workflows:
      1. For the first time, or to reset stored statistics (although this is done with every push to master):

        This is required if the actions_branch branch is not created, as it is created when run

      2. Otherwise, for updating generated statistics visualizations (although this is automatically done daily):

        This requires the actions_branch branch to first be created with generated statistics visualizations

    2. With the GitHub Actions page open, click the 'Run workflow' dropdown menu button
    3. Select Branch: master from the 'Use workflow from' dropdown list
    4. Click the 'Run workflow' button

View Generated Statistics

  1. Following the successful completion of a workflow, generated statistics visualizations can be viewed:
    1. In the generated_images directory in the actions_branch branch with the following image links:
      1. Language statistics using @media prefers-color-scheme for dark and light mode - not tested
      2. Language statistics in light mode only
      3. Language statistics in dark mode only
      4. Overview statistics using @media prefers-color-scheme for dark and light mode - not tested
      5. Overview statistics in light mode only
      6. Overview statistics in dark mode only

Display Generated Statistics

  1. To display the generated statistics, constant URLs can be used for images that are updated daily:
    1. For a GitHub profile README.md, attach #gh-light-mode-only and #gh-dark-mode-only to light and dark raw image links, respectively, such as:
      1. For generated language statistics visualizations (replacing with your GitHub username):
      ![](https://raw.githubusercontent.com/
              /GitStats/actions_branch/generated_images/languagesLightMode.svg
              #gh-light-mode-only)![](https://raw.githubusercontent.com/
              
               /GitStats/actions_branch/generated_images/languagesDarkMode.svg
               #gh-dark-mode-only)
              
             
      1. For generated overview statistic visualizations (replacing with your GitHub username):
      ![](https://raw.githubusercontent.com/
              /GitStats/actions_branch/generated_images/overviewLightMode.svg
              #gh-light-mode-only)![](https://raw.githubusercontent.com/
              
               /GitStats/actions_branch/generated_images/overviewDarkMode.svg
               #gh-dark-mode-only)
              
             
    2. For websites, use the raw image URLs for any suitable image from the above View Generated Statistics links.

      Note: I have not used the images on any website other than the following GitHub pages:

      https://r055a.github.io/profile/statistics/

      https://r055a.github.io/university-projects/statistics/

Statistics Options

Click to view Repository Secrets for customizing GitHub statistic visualizations
  • Secret Name: EXCLUDED
    • for excluding listed repositories from being included in the generated statistic visualizations
    • enter Value in the following format (separated by commas):
      • [owner/repo],[owner/repo],...,[owner/repo]
    • example:
      • jstrieb/github-stats,rahul-jha98/github-stats-transparent,idiotWu/stats
  • Secret Name: ONLY_INCLUDED
    • for ONLY including listed repositories in the generated statistic visualizations
    • enter Value in the following format (separated by commas):
      • [owner/repo],[owner/repo],...,[owner/repo]
    • example:
      • R055A/GitStats,R055A/R055A
  • Secret Name EXCLUDED_LANGS
    • for excluding listed languages from being included in the generated statistic visualizations
    • enter Value in the following format (separated by commas):
      • [language],[language],...,[language]
    • example:
      • HTML,Jupyter Notebook,Makefile,Dockerfile
  • Secret Name INCLUDE_FORKED_REPOS
    • for including forked repositories in the generated statistic visualizations
      • false by default
    • enter Value in the following format:
    • examples:
      • true
  • Secret Name EXCLUDE_CONTRIB_REPOS
    • for excluding repositories (pull request) contributed to in the generated statistic visualizations
      • false by default
    • enter Value in the following format:
    • examples:
      • true
  • Secret Name EXCLUDE_ARCHIVE_REPOS
    • for excluding archived repositories in the generated statistic visualizations
      • false by default
    • enter Value in the following format:
    • examples:
      • true
  • Secret Name EXCLUDE_PRIVATE_REPOS
    • for excluding private repositories in the generated statistic visualizations
      • false by default
    • enter Value in the following format:
    • examples:
      • true
  • Secret Name EXCLUDE_PUBLIC_REPOS
    • for excluding public repositories in the generated statistic visualizations
      • false by default
    • enter Value in the following format:
    • examples:
      • true
  • Secret Name MORE_REPOS
    • for including repositories that are otherwise not included in the generated statistic visualizations
      • such as imported repositories with contributions
    • enter Value in the following format (separated by commas):
      • [owner/repo],[owner/repo],...,[owner/repo]
    • example:
      • R055A/GitStats,R055A/R055A
  • Secret Name MORE_COLLABS
    • for adding a constant value to the generated repository collaborators statistic
      • such as for collaborators that are otherwise not represented
    • enter Value in the following format:
    • example:
      • 4
  • Secret Name STORE_REPO_CLONES
    • for storing generated repository clone statistic visualization data beyond the 14 day-limit GitHub API allows
      • true by default
    • enter Value in the following format:
    • examples:
      • false
  • Secret Name STORE_REPO_VIEWS
    • for storing generated repository view statistic visualization data beyond the 14 day-limit GitHub API allows
      • true by default
    • enter Value in the following format:
    • examples:
      • false
  • Secret Name REPO_VIEWS
    • for adding a constant value to the generated repository view statistics
      • such as for when the stored data is reset or when importing stat data from elsewhere
      • requires being removed within 14 days after the first workflow is run (with LAST_VIEWED)
      • requires corresponding LAST_VIEWED and FIRST_VIEWED Secrets
    • enter Value in the following format:
    • example:
      • 5000
  • Secret Name LAST_VIEWED
    • for updating the date the generated repository view statistics data is added to storage from
      • such as for when the stored data is reset or when importing stat data from elsewhere
      • requires being removed within 14 days after the first workflow is run (with REPO_VIEWS)
      • may require corresponding REPO_VIEWS and FIRST_VIEWED Secrets
    • enter Value in the following format:
      • YYYY-MM-DD
    • example:
      • 2020-10-01
  • Secret Name FIRST_VIEWED
    • for updating the 'as of' date the generated repository view statistics data is stored from
      • such as for when the stored data is reset or when importing stat data from elsewhere
      • may require corresponding REPO_VIEWS and LAST_VIEWED Secrets
    • enter Value in the following format:
      • YYYY-MM-DD
    • example:
      • 2021-03-31
  • Secret Name REPO_CLONES
    • for adding a constant value to the generated repository clone statistics
      • such as for when the stored data is reset or when importing stat data from elsewhere
      • requires being removed within 14 days after the first workflow is run (with LAST_CLONED)
      • requires corresponding LAST_CLONED and FIRST_CLONED Secrets
    • enter Value in the following format:
    • example:
      • 2500
  • Secret Name LAST_CLONED
    • for updating the date the generated repository clone statistics data is added to storage from
      • such as for when the stored data is reset or when importing stat data from elsewhere
      • requires being removed within 14 days after the first workflow is run (with REPO_CLONES)
      • may require corresponding REPO_CLONES and FIRST_CLONED Secrets
    • enter Value in the following format:
      • YYYY-MM-DD
    • example:
      • 2020-10-01
  • Secret Name FIRST_CLONED
    • for updating the 'as of' date the generated repository clone statistics data is stored from
      • such as for when the stored data is reset or when importing stat data from elsewhere
      • may require corresponding REPO_CLONES and LAST_CLONED Secrets
    • enter Value in the following format:
      • YYYY-MM-DD
    • example:
      • 2021-04-01

Support the Project

There are a few things you can do to support the project:

  • Star the repository (and follow me and/or jstrieb on GitHub for more)
  • Share and upvote on sites
  • Report any bugs, glitches, or errors that you find
  • Spare a donation to a worthy cause

Related Projects

Visualization Data Drug in thailand during 2014 to 2020

Visualization Data Drug in thailand during 2014 to 2020 Data sorce from ข้อมูลเปิดภาครัฐ สำนักงาน ป.ป.ส Inttroducing program Using tkinter module for

Narongkorn 1 Jan 05, 2022
A minimal Python package that produces slice plots through h5m DAGMC geometry files

A minimal Python package that produces slice plots through h5m DAGMC geometry files Installation pip install dagmc_geometry_slice_plotter Python API U

Fusion Energy 4 Dec 02, 2022
Scientific Visualization: Python + Matplotlib

An open access book on scientific visualization using python and matplotlib

Nicolas P. Rougier 8.6k Dec 31, 2022
Streamlit-template - A streamlit app template based on streamlit-option-menu

streamlit-template A streamlit app template for geospatial applications based on

Qiusheng Wu 41 Dec 10, 2022
Function Plotter: a simple application with GUI to plot mathematical functions

Function-Plotter Function Plotter is a simple application with GUI to plot mathe

Mohamed Nabawe 4 Jan 03, 2022
Mattia Ficarelli 2 Mar 29, 2022
🐞 📊 Ladybug extension to generate 2D charts

ladybug-charts Ladybug extension to generate 2D charts. Installation pip install ladybug-charts QuickStart import ladybug_charts API Documentation Loc

Ladybug Tools 3 Dec 30, 2022
Lightweight data validation and adaptation Python library.

Valideer Lightweight data validation and adaptation library for Python. At a Glance: Supports both validation (check if a value is valid) and adaptati

Podio 258 Nov 22, 2022
🎨 Python Echarts Plotting Library

pyecharts Python ❤️ ECharts = pyecharts English README 📣 简介 Apache ECharts (incubating) 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达

pyecharts 13.1k Jan 03, 2023
Visualizing weather changes across the world using third party APIs and Python.

WEATHER FORECASTING ACROSS THE WORLD Overview Python scripts were created to visualize the weather for over 500 cities across the world at varying di

G Johnson 0 Jun 12, 2021
Fast data visualization and GUI tools for scientific / engineering applications

PyQtGraph A pure-Python graphics library for PyQt5/PyQt6/PySide2/PySide6 Copyright 2020 Luke Campagnola, University of North Carolina at Chapel Hill h

pyqtgraph 3.1k Jan 08, 2023
VDLdraw - Batch plot the log files exported from VisualDL using Matplotlib

VDLdraw Batch plot the log files exported from VisualDL using Matplotlib. At pre

Yizhou Chen 5 Sep 26, 2022
This tool is designed to help administrators get an overview of their Active Directory structure.

This tool is designed to help administrators get an overview of their Active Directory structure. In the group view you can see all elements of an AD (OU, USER, GROUPS, COMPUTERS etc.). In the user v

deexno 2 Oct 30, 2022
Homework 2: Matplotlib and Data Visualization

Homework 2: Matplotlib and Data Visualization Overview These data visualizations were created for my introductory computer science course using Python

Sophia Huang 12 Oct 20, 2022
Standardized plots and visualizations in Python

Standardized plots and visualizations in Python pltviz is a Python package for standardized visualization. Routine and novel plotting approaches are f

Andrew Tavis McAllister 0 Jul 09, 2022
UNMAINTAINED! Renders beautiful SVG maps in Python.

Kartograph is not maintained anymore As you probably already guessed from the commit history in this repo, Kartograph.py is not maintained, which mean

1k Dec 09, 2022
A set of three functions, useful in geographical calculations of different sorts

GreatCircle A set of three functions, useful in geographical calculations of different sorts. Available for PHP, Python, Javascript and Ruby. Live dem

72 Sep 30, 2022
A small timeseries transformation API built on Flask and Pandas

#Mcflyin ###A timeseries transformation API built on Pandas and Flask This is a small demo of an API to do timeseries transformations built on Flask a

Rob Story 84 Mar 25, 2022
HW_02 Data visualisation task

HW_02 Data visualisation and Matplotlib practice Instructions for HW_02 Idea for data analysis As I was brainstorming ideas and running through databa

9 Dec 13, 2022
Monochromatic colorscheme for matplotlib with opinionated sensible default

Monochromatic colorscheme for matplotlib with opinionated sensible default If you need a simple monochromatic colorscheme for your matplotlib figures,

Aria Ghora Prabono 2 May 06, 2022