Skip to content
Related Articles

Related Articles

Improve Article
Y Fractal tree in Python using Turtle
  • Last Updated : 02 Jul, 2020

A fractal is a never-ending pattern. Fractals are infinitely complex patterns that are self-similar across different scales. They are created by repeating a simple process over and over in an ongoing feedback loop. Driven by recursion, fractals are images of dynamic systems – the pictures of Chaos.

In this article, we will draw a colorful Y fractal tree using a recursive technique in Python.

Examples:

Output for depth level: (a) 14 (b) 12

Modules required

turtle: turtle library enables users to draw picture or shapes using commands, providing them with a virtual canvas. turtle comes with Python’s Standard Library. It needs a version of Python with Tk support, as it uses tkinter for the graphics.

Functions used:



  • fd(x) : draw the cursor forward by x pixels.
  • rt(x), lt(x) : rotates the facing direction of the cursor by x degrees to the right and left respectively.
  • colormode(): to change the colour mode to rgb.
  • pencolor(r, g, b): to set the colour of the turtle pen.
  • speed(): to set the speed of the turtle.

Approach :

  • We start by drawing a single ‘Y’ shape for the base(level 1) tree. Then both the branches of the ‘Y’ serve as the base of other two ‘Y’s(level 2).
  • This process is repeated recursively and size of the Y decreases as level increases.
  • Colouring of the tree is done level wise: darkest in the base level to lightest in the topmost.

In the implementation below, we will draw a tree of size 80 and level 7.




from turtle import *
  
  
speed('fastest')
  
# turning the turtle to face upwards
rt(-90)
  
# the acute angle between
# the base and branch of the Y
angle = 30
  
# function to plot a Y
def y(sz, level):   
  
    if level > 0:
        colormode(255)
          
        # splitting the rgb range for green
        # into equal intervals for each level
        # setting the colour according
        # to the current level
        pencolor(0, 255//level, 0)
          
        # drawing the base
        fd(sz)
  
        rt(angle)
  
        # recursive call for
        # the right subtree
        y(0.8 * sz, level-1)
          
        pencolor(0, 255//level, 0)
          
        lt( 2 * angle )
  
        # recursive call for
        # the left subtree
        y(0.8 * sz, level-1)
          
        pencolor(0, 255//level, 0)
          
        rt(angle)
        fd(-sz)
           
          
# tree of size 80 and level 7
y(80, 7)

Output :

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course




My Personal Notes arrow_drop_up
Recommended Articles
Page :