{"id":38689966,"url":"https://github.com/chris-greening/spyrograph","last_synced_at":"2026-01-17T10:30:57.453Z","repository":{"id":113626310,"uuid":"609955227","full_name":"chris-greening/spyrograph","owner":"chris-greening","description":"Python library for analyzing, exploring, and visualizing epitrochoids and hypotrochoids in just a few lines of code","archived":false,"fork":false,"pushed_at":"2023-07-07T03:26:39.000Z","size":20836,"stargazers_count":31,"open_issues_count":7,"forks_count":20,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-27T21:51:40.370Z","etag":null,"topics":["beginner-friendly","data-science","data-visualization","flexible","hacktoberfest","mathematics","physics","python","python3"],"latest_commit_sha":null,"homepage":"https://chris-greening.github.io/spyrograph/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chris-greening.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-05T18:20:21.000Z","updated_at":"2025-09-17T20:47:37.000Z","dependencies_parsed_at":"2023-07-10T22:00:27.255Z","dependency_job_id":null,"html_url":"https://github.com/chris-greening/spyrograph","commit_stats":{"total_commits":702,"total_committers":18,"mean_commits":39.0,"dds":0.1894586894586895,"last_synced_commit":"b13cfa02acf4664fbef954cfce4dc315cbd55a1f"},"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/chris-greening/spyrograph","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-greening%2Fspyrograph","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-greening%2Fspyrograph/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-greening%2Fspyrograph/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-greening%2Fspyrograph/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chris-greening","download_url":"https://codeload.github.com/chris-greening/spyrograph/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris-greening%2Fspyrograph/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28506588,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T10:25:30.148Z","status":"ssl_error","status_checked_at":"2026-01-17T10:25:29.718Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beginner-friendly","data-science","data-visualization","flexible","hacktoberfest","mathematics","physics","python","python3"],"created_at":"2026-01-17T10:30:57.337Z","updated_at":"2026-01-17T10:30:57.433Z","avatar_url":"https://github.com/chris-greening.png","language":"Python","funding_links":["https://www.buymeacoffee.com/chrisgreening"],"categories":[],"sub_categories":[],"readme":"# _spyrograph_: elegant mathematics and geometries\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/rgb.gif\" alt=\"Animation of three geometric, symmetrical shapes being drawn next to one another left to right. The shape on the left is red, the middle green, and the right is blue.\"\u003e\n\u003c/p\u003e\n\n## What is it?\n_spyrograph_ is a lightweight Python package that provides an expressive and flexible set of tools for drawing beautiful mathematically driven art. With just a few lines of easy-to-read code you can start analyzing, visualizing, and exploring elegant mathematics \n\n[![Downloads](https://static.pepy.tech/personalized-badge/spyrograph?period=total\u0026units=international_system\u0026left_color=grey\u0026right_color=brightgreen\u0026left_text=downloads)](https://pepy.tech/project/spyrograph)\n[![Issues](https://img.shields.io/github/issues/chris-greening/spyrograph)](https://github.com/chris-greening/spyrograph/issues)\n[![License](https://img.shields.io/github/license/chris-greening/spyrograph)](LICENSE)\n[![Version](https://img.shields.io/pypi/v/spyrograph?color=brightgreen)](https://pypi.org/project/spyrograph/)\n[![Documentation Status](https://readthedocs.org/projects/spyrograph/badge/?version=latest)](https://spyrograph.readthedocs.io/en/latest/?badge=latest)\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/chrisgreening)\n\n[Official website](https://chris-greening.github.io/spyrograph/)\n\n[Official docs](https://spyrograph.readthedocs.io/en/latest/)\n\n## Table of Contents\n* [Key features](#key-features)\n* [Installation](#installation)\n* [Quickstart](#quickstart)\n* [Contributing](#contributing)\n* [Blog posts](#blog-posts)\n* [Documentation](#documentation)\n* [License](#license)\n* [Support](#support)\n\n---\n\n## :key: Key features \u003ca name=\"key-features\"\u003e\u003c/a\u003e\n- Expressive and consistent syntax\n- Robust underlying mathematics\n- Beginner _and_ expert friendly\n- `numpy` is the only required third-party installation\n- Clear visualizations and animations\n- Flexible to a wide range of usecases\n- Lightweight, just plug and play\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"media/sample_drawing.gif\" alt=\"Sample hypotrochoid drawing showing a circle rolling around the interior of another circle drawing a geometric shape\"\u003e\n\u003c/p\u003e\n\n---\n\n## :computer: Installation \u003ca name=\"installation\"\u003e\u003c/a\u003e\n\n### pip\nInstall the latest stable release from PyPI using\n```shell\n$ pip3 install spyrograph\n```\n\nor clone the development version from GitHub with\n```shell\n$ git clone https://github.com/chris-greening/spyrograph.git\n```\n\n---\n\n## :seedling: Quickstart \u003ca name=\"quickstart\"\u003e\u003c/a\u003e\n\n`spyrograph` is designed to be expressive and easy-to-use - simply `import spyrograph` and jump right into drawing elegant, complex shapes in just a few lines of code!\n\n```python\nfrom spyrograph import Hypotrochoid\n\n# Trace a hypotrochoid from 0 to 2pi where\n# the fixed circle radius is 300, rolling circle \n# radius is 200, and the distance from the rolling \n# circle is 100\nhypotrochoid = Hypotrochoid(\n    R=300,\n    r=200,\n    d=100,\n    thetas=np.arange(0, 2*np.pi, .1)\n)\nhypotrochoid.trace(\n    show_circles=True, \n    frame_pause=.05, \n    circle_color=\"grey\"\n)\n```\n\n---\n\n## :pray: Contributing \u003ca name=\"contributing\"\u003e\u003c/a\u003e\nAll contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome!\n\nFeel free to [open an Issue](https://github.com/chris-greening/spyrograph/issues/new/choose), check out existing [Issues](https://github.com/chris-greening/spyrograph/issues), or [start a discussion](https://github.com/chris-greening/spyrograph/discussions). \n\nBeginners to open source are highly encouraged to participate and ask questions if you're unsure what to do/where to start\n\n---\n\n## :newspaper: Blog posts \u003ca name=\"blog-posts\"\u003e\u003c/a\u003e\nCheck out the [official website](https://chris-greening.github.io/spyrograph/) for the latest blog posts on the project!\n\n- [Draw beautiful geometric visualizations with Python and spyrograph](https://chris-greening.github.io/spyrograph/python/2023/03/11/draw-beautiful-geometric-visualizations-and-animations-with-python-and-spyrograph.html)\n- [Configuring the trace method to explore stunning spirographs in Python](https://chris-greening.github.io/spyrograph/python/2023/03/24/configuring-the-trace-method-to-explore-stunning-spirographs-in-python.html)\n- [Creating a range of hypotrochoids with the create_range method](https://chris-greening.github.io/spyrograph/python/2023/03/25/creating-a-range-of-hypotrochoids-with-the-create-range-method.html)\n- [Plotting beautiful spirographs with matplotlib and spyrograph](https://chris-greening.github.io/spyrograph/python/2023/03/27/plotting-beautiful-spirographs-with-matplotlib-and-spyrograph.html)\n- [Drawing cycloids with a specific number of cusps using spyrograph](https://chris-greening.github.io/spyrograph/python/2023/03/28/drawing-cycloids-with-a-specific-number-of-cusps-using-spyrograph.html)\n- [Scaling trochoid’s and cycloid’s input parameters with the spyrograph scale method](https://chris-greening.github.io/spyrograph/python/2023/04/01/scaling-trochoids-and-cycloids-input-parameters-with-the-spyrograph-scale-method.html)\n- [Spyrograph is looking for beginners to open source to contribute!](https://dev.to/chrisgreening/spyrograph-is-looking-for-beginners-to-open-source-to-contribute-1nbe)\n- [Creating mesmerizing spirograph animations with Python and Spyrograph](https://chris-greening.github.io/spyrograph/python/2023/04/05/creating-mesmirizing-spirograph-animations-with-python-and-spyrograph.html)\n- [Adding a boomerang effect to our spirograph animations](https://chris-greening.github.io/spyrograph/python/2023/04/06/adding-a-boomerang-effect-to-our-spyrograph-animations.html)\n- [Tracing multiple shapes on the same screen with Spyrograph](https://chris-greening.github.io/spyrograph/python/2023/04/08/tracing-multiple-shapes-on-the-same-screen-with-spyrograph.html)\n- [Customizing the origin of our geometric visualizations using Python and Spyrograph](https://chris-greening.github.io/spyrograph/python/2023/04/08/customizing-the-origin-of-our-geometric-visualizations-using-python-and-spyrograph.html)\n- [Unlock the power of method chaining for elegant and efficient Spyrograph transformations](https://chris-greening.github.io/spyrograph/python/2023/04/18/unlock-the-power-of-method-chaining-for-elegant-and-efficient-spyrograph-transformations.html)\n\n---\n\n## :books: Documentation \u003ca name=\"documentation\"\u003e\u003c/a\u003e\nThe official documentation can be found on [Read The Docs](https://spyrograph.readthedocs.io/en/latest/index.html)\n\n---\n\n## :credit_card: License \u003ca name=\"license\"\u003e\u003c/a\u003e\nThis library operates under the [MIT](LICENSE) license.\n\n---\n\n## :grey_question: Support \u003ca name=\"support\"\u003e\u003c/a\u003e\n\nReach out to me if you want to connect or have any questions and I will do my best to get back to you\n* Email:\n  * chris@christophergreening.com\n* Twitter:\n  * [@ChrisGreening](https://twitter.com/ChrisGreening)\n* LinkedIn\n  * [Chris Greening](https://www.linkedin.com/in/chris-greening-646411139/)\n* Personal contact form: \n  * [www.christophergreening.com](https://www.christophergreening.com/contact)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris-greening%2Fspyrograph","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchris-greening%2Fspyrograph","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris-greening%2Fspyrograph/lists"}