In [5]:
import math
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [30]:
def createhex(xoff=1,yoff=1):
    A = (math.cos(math.radians(30)), math.sin(math.radians(30)))
    B = (math.cos(math.radians(90)), sin(math.radians(90)))
    C = (math.cos(math.radians(150)), sin(math.radians(150)))
    D = (math.cos(math.radians(210)), sin(math.radians(210)))
    E = (math.cos(math.radians(270)), sin(math.radians(270)))
    F = (math.cos(math.radians(330)), sin(math.radians(330)))
    G = (math.cos(math.radians(30)), math.sin(math.radians(30)))
    x,y = zip(A,B,C,D,E,F,G)
    x = [i + xoff for i in x]
    y = [i + yoff for i in y]
    return x,y

In [52]:
figsize(8,8)
xoffset = math.cos(math.radians(30))
yoffset = math.sin(math.radians(30))
for i in range(20):
    for j in range(20):
        xoff = j * xoffset * 2
        if i % 2 != 0:
            xoff += xoffset
        yoff = i * yoffset * 3
        x,y = createhex(xoff, yoff)
        plt.plot(x,y)



In [61]:
def createoct(xoff=1,yoff=1):
    A = (math.cos(math.radians(45)), math.sin(math.radians(45)))
    B = (math.cos(math.radians(90)), sin(math.radians(90)))
    C = (math.cos(math.radians(135)), sin(math.radians(135)))
    D = (math.cos(math.radians(180)), sin(math.radians(180)))
    E = (math.cos(math.radians(225)), sin(math.radians(225)))
    F = (math.cos(math.radians(270)), sin(math.radians(270)))
    G = (math.cos(math.radians(315)), sin(math.radians(315)))
    H = (math.cos(math.radians(360)), sin(math.radians(360)))
    I = (math.cos(math.radians(45)), math.sin(math.radians(45)))
    x,y = zip(A,B,C,D,E,F,G,H,I)
    x = [i + xoff for i in x]
    y = [i + yoff for i in y]
    return x,y

In [62]:
x, y = createoct()
plt.plot(x,y)


Out[62]:
[<matplotlib.lines.Line2D at 0x106b68050>]

In [110]:
figsize(8,8)
xoffset = math.cos(math.radians(45))
yoffset = math.sin(math.radians(45))
for i in range(5):
    for j in range(2):
        xoff = j * 2
        if i % 2 != 0:
            xoff += xoffset
        yoff = i * 1.75
        x,y = createoct(xoff, yoff)
        plt.plot(x,y)



In [ ]: