Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


Generate GitHub-style punchcard charts with ease.

Subscribe to updates I use Punchcard

Statistics on Punchcard

Number of watchers on Github 235
Number of open issues 2
Main language Python
Average time to merge a PR about 10 hours
Open pull requests 3+
Closed pull requests 0+
Last commit over 6 years ago
Repo Created over 6 years ago
Repo Last Updated over 2 years ago
Size 348 KB
Organization / Authorfogleman
Page Updated
Do you use Punchcard? Leave a review!
View open issues (2)
View Punchcard activity
View on github
Book a Mock Interview With Me (Silicon Valley Engineering Leader, 100s of interviews conducted)
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating Punchcard for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Generate GitHub-style punchcard charts with ease.

python punchcard.py sample.csv output.png "Sample Chart"



brew install py2cairo pango pygtk

Command Line

python punchcard.py input.csv output.png [title]


punchcard(png_path, data, row_labels, col_labels)

data must be a two-dimensional array of data for the punchcard chart (a list of lists where each list is a row). len(data) == len(row_labels) and len(data[0]) == len(col_labels)

The following keyword arguments are also allowed.

keyword default description
padding 12 padding between chart, labels and boundary
cell_padding 4 padding between circles and cell edges
min_size 4 minimum circle size, for smallest value
max_size 32 maximum circle size, for largest value
min_color 0.8 grayscale value for smallest value
max_color 0.0 grayscale value for largest value
font 'Helvetica' facename used for labels
font_size 14 font size for labels
font_bold False bold labels
title None title text, optional
title_font 'Helvetica' facename used for title
title_font_size 20 font size for title
title_font_bold True bold title
diagonal_column_labels False diagonal column labels
Punchcard open pull requests (View All Pulls)
  • Add __init__.py for importing as a package
  • Read commandline arguments using argparse.
  • type:fix
Punchcard questions on Stackoverflow (View All Questions)
  • Punchcard plot in R
Punchcard list of languages used
Other projects in Python
Powered by Autocode - Instant Webhooks, Scripts and APIs
Autocode logo wordmark