Skip to main content

SVG drawing library

Project description

pysvglib

A Python-based SVG graphics library for programmatically generating SVG diagrams from basic shapes.

Example

Import the library

import svg

Create a "root" SVG object and define the view box. Keyword arguments define other parameters that will be passed to the fundamental svg node.

root = svg.RootSvg((-25, -25, 50, 50), width='50%', height='50%')

Add style definitions that will affect the entire graphic. Keyword arguments become css style parameters.

root.add_style(svg.Style('.glass', fill='#bbf7f4', fill_opacity=0.5))
root.add_style(svg.Style('.outline', stroke='black'))

Add child nodes and groups of nodes. These can be rectangles, circles, complex paths, etc.

root.append_child(svg.Rectangle(p1=(-10, -15), p2=(30, 85), fill='#cccccc', stroke='none'))

mygroup = svg.Group(id='mygroup')
mygroup.append_child(svg.Rectangle(center=(0, 0), width=5, height=10).append_class('glass'))
mygroup.append_child(svg.Rectangle(center=(3, 2), width=10, height=5).append_class('glass'))
root.append_child(mygroup)

path = svg.Path((6.7, -10), stroke_width=0.2, fill='none')
path.line_to((0, 20), relative=True).h_line(-2, relative=True) \
    .arc_to((12.9, 12.9), 0, False, True, (0, -20), relative=True) \
    .close()
path.append_class('outline')
root.append_child(path)

Apply transformations to nodes and groups.

mygroup.rotate(37, center=(4, 7))
mygroup.translate((2, -4))
path.skew_x(10)

Output the SVG markup as a string.

print(root)

Which results in:

<svg height="100%" viewBox="-25 -25 50 50" width="100%" xmlns="http://www.w3.org/2000/svg">
  <style>
    .glass {
      fill: #bbf7f4;
      fill-opacity: 0.5;
    }
  </style>
  <g id="mygroup">
    <rect fill="#cccccc" height="100" stroke="none" width="100" x="-50" y="-50"/>
    <rect class="glass" height="10" width="5" x="-2.5" y="-5.0"/>
  </g>
  <path d="M 6.7 -10 l 0 20 h -2 a 12.9 12.9 0 0 1 0 -20 Z" fill="none" stroke-width="0.2"/>
</svg>

...or output it to a file:

root.write('my_picture.svg')

which results in:

Simple SVG

Development

Use pipenv for local environment management. After cloning the repository:

$ cd <project-repo>
$ pipenv install -e .[dev]
$ pipenv shell

Run tests by just executing pytest at the root of the local virtual environment. Likewise enforce code style by running pycodestyle . from the root of the local virtual environment.

To package and release, from within the virtual environment:

$ python setup.py sdist bdist_wheel

See also this 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

pysvglib-0.3.2.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

pysvglib-0.3.2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file pysvglib-0.3.2.tar.gz.

File metadata

  • Download URL: pysvglib-0.3.2.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.0

File hashes

Hashes for pysvglib-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a85bb7ceb92b1e8db0cb7cce6a768794838af3d7c41faa8a7dd9e5e6c15c34cb
MD5 f128dfd7e659be68ddcb6cc154006fe5
BLAKE2b-256 5896dc417d337d8f44384a5897e46514e3ccc4cd54213dcb026da55ab38a2336

See more details on using hashes here.

File details

Details for the file pysvglib-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: pysvglib-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.0

File hashes

Hashes for pysvglib-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 cd79357b3d178f0c91ea8b867a0d466221b8f9f01ee8858ec64d6d7b75c00aeb
MD5 07438dc822168cdcb9891e89097cfe2b
BLAKE2b-256 79d65bd152201a5c4694e505f93eded1922f1f8cd5c1255d074dc9a4dcdedc7e

See more details on using hashes here.

Supported by

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