In [1]:
%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
import svgpath2mpl
In [2]:
EXAMPLES = {
'triangle01': {
'width': 400,
'height': 400,
'paths': [{
'd': "M 100 100 L 300 100 L 200 300 z",
'fill': "red",
'stroke': "blue",
'stroke-width': 3,
}],
},
'cubic01': {
'width': 500,
'height': 400,
'paths': [{
'd': "M100,200 C100,100 250,100 250,200 S400,300 400,200",
'fill': "none",
'stroke': "red",
'stroke-width': 5,
}],
},
'quad01': {
'width': 1200,
'height': 600,
'paths': [{
'd': "M200,300 Q400,50 600,300 T1000,300",
'fill': "none",
'stroke': "red",
'stroke-width': 5,
},
{
'd': "M200,300 L400,50 L600,300 L800,550 L1000,300",
'fill': "none",
'stroke': "#888888",
'stroke-width': 2,
}],
},
'heart': {
'width': 100,
'height': 100,
'paths': [{
'd': "M 10,30 "
"A 20,20 0,0,1 50,30 "
"A 20,20 0,0,1 90,30 "
"Q 90,60 50,90 "
"Q 10,60 10,30 z",
"stroke": "red",
'fill': 'none',
'stroke-width': 6,
}],
},
'arcs01': {
'width': 1200,
'height': 400,
'paths': [{
'd': "M300,200 h-150 a150,150 0 1,0 150,-150 z",
'fill': "red",
'stroke': "blue",
'stroke-width': 5,
},
{
'd': "M275,175 v-150 a150,150 0 0,0 -150,150 z",
'fill': "yellow",
'stroke': "blue",
'stroke-width': 5,
},
{
'd': "M600,350 l 50,-25 "
"a25,25 -30 0,1 50,-25 l 50,-25 "
"a25,50 -30 0,1 50,-25 l 50,-25 "
"a25,75 -30 0,1 50,-25 l 50,-25 "
"a25,100 -30 0,1 50,-25 l 50,-25",
'fill': "none",
'stroke': "red",
'stroke-width': 5,
}],
},
'arcs02':{
'width': 1200,
'height': 400,
'paths': [{
'd': "M 125,75 a100,50 0 0,0 100,50",
'fill': "none",
'stroke': "red",
'stroke-width': 6,
},
{
'd': "M 875,75 a100,50 0 0,1 100,50",
'fill': "none",
'stroke': "red",
'stroke-width': 6,
},
{
'd': "M 125,275 a100,50 0 1,0 100,50",
'fill': "none",
'stroke': "red",
'stroke-width': 6,
},
{
'd': "M 825,275 a100,50 0 1,1 100,50",
'fill': "none",
'stroke': "red",
'stroke-width': 6,
}],
}
}
In [3]:
for name, config in EXAMPLES.items():
fig = plt.figure(figsize=(12, 5.25))
ax = fig.add_subplot(111)
for d in config['paths']:
path = svgpath2mpl.parse_path(d['d'])
patch = mpl.patches.PathPatch(
path,
facecolor=d.get('fill', 'none'),
edgecolor=d.get('stroke', 'black'),
linewidth=d.get('stroke-width', 1))
patch.set_transform(ax.transData)
ax.add_patch(patch)
ax.set_aspect(1)
ax.set_xlim([0, config.get('width', 800)])
ax.set_ylim([config.get('height', 800), 0])
plt.title(name)
In [ ]:
In [ ]:
In [ ]:
In [ ]:
In [ ]: