파이썬, 368 바이트
matplotlib 사용
from matplotlib import pyplot as l,patches as p,transforms as t;z=0,;[l.gca().add_patch(p.Wedge(z*2,R,s,360,width=w,color=(r,o,o),transform=t.Affine2D.from_values(X,0,0,9,350+x*n,y*9)))for R,s,w,r,o,X,x,y in zip([11,7,15,4,2,2,99],z*5+(180,359),[None]*5+[.2,.4],(1,)*4+z*3,(.8,.6,.8,1)+z*3,[4,4]+[9]*5,[7,7,0,6,6,2,98.8],[51,51,30,35,35,24,26])for n in[-9,9]];l.show()
결과:
언 골프 드 :
from matplotlib import pyplot, patches, transforms
z = 0, # store zero as a tuple for later repetition
for radius, startAngle, width, red, other, xStretch, x, y in \
zip([11 ,7 ,15 ,4 ,2 ,2 ,99 ], # radius
z * 5 + (180,359 ), # start angle
[None] * 5 + [.2 ,.4 ], # wedge width (None = full)
(1,) * 4 +z * 3 , # red channel
(.8 ,.6 ,.8 ,1) +z * 3 , # other color channels
[4]*2 + [9]*5 , # x stretch factor
[ 7 ,7 ,0 ,6 ,6 ,2 ,98.8 ], # x
[51 ,51 ,30 ,35 ,35 ,24 ,26 ]): # y
# | | | | | | |
# | | | | | | "straight" line for upper mouth
# | | | | | | approximated by large radius arc
# | | | | | |
# | | | | | Arc for lower mouth
# | | | | |
# | | | | Inner eye circle
# | | | |
# | | | Outer eye circle
# | | |
# | | Circle for head
# | |
# | Inner ear ellipse
# |
# Outer ear ellipse
for n in [-9, 9]: # draw left and right side mirrored
pyplot.gca().add_patch( patches.Wedge(
z*2, # center = (0, 0), actual location set by the transform below
radius,
startAngle,
360, # end angle
width = width,
color = (red, other, other), # only red channel varies from the others
transform = transforms.Affine2D.from_values( # affine transform matrix
xStretch, # x stretch factor
0, 0, # unused cross-axis coefficients for skew/rotation
9, # y stretch factor
x * n + 350, # x value reflected by n, centered at 350
y * 9 ))) # y value
pyplot.show()