K-Means Clustering 

importturtle classTree: def__init__(self, pen, n, width, length, width_ratio, length_ratio): """ Constructor which takes the following arguments pen: The pen object from Turtle Graphics n: How many sub-branches will be drawn width: The width of the initial branch length: The length of the initial branch width_ratio: How much the width will be reduced for each sub-branch length_ratio: How much the length will be reduced for each sub-branch """ self.pen= pen self.n= n self.width= width self.length= length self.width_ratio=width_ratio self.length_ratio=length_ratio self.colors= ['red', 'green', 'blue', 'yellow', 'orange', 'purple'] self.pen.speed('fastest') # Set turtle speed to fatest self.pen.left(90) # Set initial direction to north self.pen.width(self.width) # Set width self.pen.forward(self.length) # draw line self.pen.back(self.length) # return to initial pos #self.pen.pendown() self.pen.forward(self.length) # draw self.draw_tree(self.length, self.n) # call draw function defdraw_tree(self, branch_length, n): width =self.pen.width() # current width # Set pen color self.pen.color(self.colors[n%len(self.colors)]) self.pen.width(width*(1-self.width_ratio)) # reduce width branch_length=branch_length* (1-self.length_ratio) # reduce length self.pen.left(30) # rotate to left self.pen.forward(branch_length) # draw # If n > 0 draw another branch if n >0: self.draw_tree(branch_length, n -1) self.pen.back(branch_length) self.pen.right(2*30) self.pen.forward(branch_length) # If n > 0 draw another branch if n >0: self.draw_tree(branch_length, n -1) self.pen.back(branch_length) self.pen.left(30) self.pen.width(width) # restore old width if __name__ =='__main__': pen =turtle.Pen() pen.goto(0, -100) # set initial position n =8# number of branches/levels from initial branch width =12# width of the initial branch length =80# length of the initial branch width_ratio=0.25# percent to reduce the width length_ratio=0.25# percent to reduce the width tree =Tree(pen, n, width, length, width_ratio, length_ratio) turtle.done()