61 lines
2.2 KiB
Python
61 lines
2.2 KiB
Python
import drawSvg as draw
|
|
|
|
d = draw.Drawing(200, 100, origin='center', displayInline=False)
|
|
|
|
# Draw an irregular polygon
|
|
d.append(draw.Lines(-80, -45,
|
|
70, -49,
|
|
95, 49,
|
|
-90, 40,
|
|
close=False,
|
|
fill='#eeee00',
|
|
stroke='black'))
|
|
|
|
# Draw a rectangle
|
|
r = draw.Rectangle(-80,0,40,50, fill='#1248ff')
|
|
r.appendTitle("Our first rectangle") # Add a tooltip
|
|
d.append(r)
|
|
|
|
# Draw a circle
|
|
d.append(draw.Circle(-40, -10, 30,
|
|
fill='red', stroke_width=2, stroke='black'))
|
|
|
|
# Draw an arbitrary path (a triangle in this case)
|
|
p = draw.Path(stroke_width=2, stroke='lime',
|
|
fill='black', fill_opacity=0.2)
|
|
p.M(-10, 20) # Start path at point (-10, 20)
|
|
p.C(30, -10, 30, 50, 70, 20) # Draw a curve to (70, 20)
|
|
d.append(p)
|
|
|
|
# Draw text
|
|
d.append(draw.Text('Basic text', 8, -10, 35, fill='blue')) # Text with font size 8
|
|
d.append(draw.Text('Path text', 8, path=p, text_anchor='start', valign='middle'))
|
|
d.append(draw.Text(['Multi-line', 'text'], 8, path=p, text_anchor='end'))
|
|
|
|
# Draw multiple circular arcs
|
|
d.append(draw.ArcLine(60,-20,20,60,270,
|
|
stroke='red', stroke_width=5, fill='red', fill_opacity=0.2))
|
|
d.append(draw.Arc(60,-20,20,60,270,cw=False,
|
|
stroke='green', stroke_width=3, fill='none'))
|
|
d.append(draw.Arc(60,-20,20,270,60,cw=True,
|
|
stroke='blue', stroke_width=1, fill='black', fill_opacity=0.3))
|
|
|
|
# Draw arrows
|
|
arrow = draw.Marker(-0.1, -0.5, 0.9, 0.5, scale=4, orient='auto')
|
|
arrow.append(draw.Lines(-0.1, -0.5, -0.1, 0.5, 0.9, 0, fill='red', close=True))
|
|
p = draw.Path(stroke='red', stroke_width=2, fill='none',
|
|
marker_end=arrow) # Add an arrow to the end of a path
|
|
p.M(20, -40).L(20, -27).L(0, -20) # Chain multiple path operations
|
|
d.append(p)
|
|
d.append(draw.Line(30, -20, 0, -10,
|
|
stroke='red', stroke_width=2, fill='none',
|
|
marker_end=arrow)) # Add an arrow to the end of a line
|
|
|
|
d.setPixelScale(2) # Set number of pixels per geometry unit
|
|
#d.setRenderSize(400,200) # Alternative to setPixelScale
|
|
d.saveSvg('example.svg')
|
|
d.savePng('example.png')
|
|
|
|
# Display in Jupyter notebook
|
|
d.rasterize() # Display as PNG
|
|
d # Display as SVG |