Skip to main content

An ergonomic and programmatic drawing library for python.

Project description

robodraw logo

tests codecov Docs PyPI Anaconda-Server Badge Pixi Badge

robodraw is an ergonomic and programmatic drawing library for python. It is a wrapper around matplotlib that provides a more intuitive way to specifically create drawings and diagrams, including in pseudo-3d. It provides the backend for the drawing functionality in quimb and cotengra.

Some useful features include:

  • no boilerplate to get a simple drawing.
  • plot limits automatially expand to fit all drawn elements.
  • style presets: reuse style across elements.
  • diagram primitives like zigzag, curve (draw a smooth line through an arbitrary set of points exactly), and patch_around (draw a smooth shape highlighting an arbitrary set of points).
  • pseudo-3d drawing, with automatic perspective and occlusion handling.
  • squared paper grid to help you with placement.
  • output or use existing matplotlib figure and axis.
  • basic colors tools
  • ... and more!

A quick example:

import robodraw

d = robodraw.Drawing(
    presets={
        "node": {"radius": 0.2, "linewidth": 0.5},
        "edge": {"color": (0, 0.3, 1, .8), "width": 0.04, "shorten": 0.2}
    },
    projection=(25, 25),
)

center = (0, 0, 0)
corners = [(1, 1, 1), (1, -1, -1), (-1, 1, -1), (-1, -1, 1)]

# nodes
for c in corners:
    color = robodraw.hash_to_color(str(c))
    d.circle(c, preset='node', color=color)

# center
d.circle(center, preset='node', radius=0.15, color="black")
d.text(center, "$\\psi$", color="yellow")

# edges to center
for c in corners:
    d.zigzag(c, center, preset="edge")

d.patch_around(corners, radius=0.5)
d.grid3d()
robodraw simple example

The full documentation can be found at: robodraw.readthedocs.io. Contributions of any sort are very welcome - please see the contributing guide. Issues and pull requests are hosted on github. For other questions and suggestions, please use the discussions page.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robodraw-0.1.0.tar.gz (4.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robodraw-0.1.0-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file robodraw-0.1.0.tar.gz.

File metadata

  • Download URL: robodraw-0.1.0.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for robodraw-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f022fe98f055cc20488cf05177f1649e98d8c9383a5ff900649ce0f13a9acd1b
MD5 fdb349464747a9f9b292b0e8d778d172
BLAKE2b-256 4ab9cf6a4c4c5ab62d6c920f5ad3502ab646e22375ea5ccf8a2460f5f5432e91

See more details on using hashes here.

Provenance

The following attestation bundles were made for robodraw-0.1.0.tar.gz:

Publisher: pypi-release.yml on jcmgray/robodraw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file robodraw-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: robodraw-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for robodraw-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cf9024b9773a5f04f507e44f234cb6d5769bb756afae5adcdb246241522b0b6c
MD5 797e19028a078392436a113cd2507128
BLAKE2b-256 a64efdf7754444233dd5100ee30d6741025da0f112bdb9ee852f299ded51cda0

See more details on using hashes here.

Provenance

The following attestation bundles were made for robodraw-0.1.0-py3-none-any.whl:

Publisher: pypi-release.yml on jcmgray/robodraw

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page