Composition B (No. II)

Made by Mimi Niou

My goal is to recreate and emphasize the sense of harmony, linear dynamism, and simplicity found in Mondrian's Neo-Plastic style work.

Created: September 5th, 2016



My Goal was to recreate Composition B (No. II) without affecting the simplistic nature of the work, but while also highlighting some of the feelings that Mondrian's style evokes.



Piet Mondrian was a Dutch painter, known for his contributions to Abstraction and the De Stijl movement. Mondrian initially painted mostly landscapes and realistic nature scenes, but was influenced by contemporary artists Bart van der Leck and Theo van Doesburg, who were also Abstract painters. Mondrian's style was also heavily influenced by his interest in spiritual studies, and Theosophy in particular, which emphasized complete harmony and the cyclical nature of life. As his career progressed, his paintings became more and more minimalistic, as he emphasized the flatness of his work surface, utilized more whitespace and less color, and limited his work to simple geometries and colors. He later coined his own style, called Neoplasticism, which uses lines and blocks of color to create a feeling of balance and harmony.



Piet Mondrian, Composition B (No. II), 1935

I chose this painting because of its simplicity, neatness, and calmness. The work belongs to Mondrian's style of Neoplasticism, meaning that it involves only straight black lines, and blocks of white, red, yellow, or blue in between. In this particular work, there is only one block of color in the top left. The white blocks are layered with paint so that they are bright and stand out even amid the precisely sharp, intersecting black lines, while the colored rectangle is painted evenly with parallel strokes.

Photo from:



Since I wanted to maintain the same feeling of simplicity as the original work, I decided to keep the layout, dimensions, and colors all the same, matching them as closely digitally to the physical work as I could. Additionally, although I could have used digital tools to create a brush effect, it seems that Mondrian's ideals of minimalism and abstraction would render that contradictory, so the animation simply creates blocks of white, red, or black.

Final Product (open in new tab for full size gif!)
Mimi Niou -
class Line(object):
    def __init__(self, x0, y0, x1, y1, color, orientation, speed):
        self.xc = x0
        self.yc = y0
        self.x0 = x0
        self.x1 = x1
        self.y0 = y0
        self.y1 = y1
        self.color = color
        self.orientation = orientation
        self.speed = speed

    def move(self):
        if self.orientation == "horizontal":
            if self.xc < self.x1:
                self.xc += self.speed
                self.xc = self.x0
        elif self.orientation == "vertical":
            if self.yc < self.y1:
                self.yc += self.speed
                self.yc = self.y0
def init(data):
    data.mode = False
    data.grey = '#%02x%02x%02x' % (240, 241, 242)
    data.maroon = '#%02x%02x%02x' % (176, 30, 40)
    data.verticalLine1 = Line(10, 207, 15, 417, "black", "vertical", 2) #vertical line 1
    data.verticalLine2 = Line(217, 0, 225, 625, "black", "vertical", 10) #vertical line 2
    data.verticalLine3 = Line(330, 0, 338, 625, "black", "vertical", 6) #vertical line 3
    data.horizontalLine1 = Line(0, 197, 490, 207, "black", "horizontal", 4) #horizontal line 1
    data.horizontalLine2 = Line(0, 417, 490, 427, "black", "horizontal", 12) #horizontal line 2
    data.lines = [data.verticalLine1, data.verticalLine2, data.verticalLine3, data.horizontalLine1, data.horizontalLine2]

def mousePressed(event, data):

def keyPressed(event, data):
    if data.mode == False:
        data.mode = True
    elif data.mode == True:
        data.mode = False

def timerFired(data):
    if data.mode == True:
        for line in data.lines:

def redrawAll(canvas, data):
    canvas.create_rectangle(0, 0, 490, 625, fill = data.grey)
    canvas.create_rectangle(0, 0, 217, 207, fill=data.maroon) #rectangle
    canvas.create_rectangle(10, 207, 15, data.verticalLine1.yc, fill="black") #vertical line 1
    canvas.create_rectangle(217, 0, 225, data.verticalLine2.yc, fill="black") #vertical line 2
    canvas.create_rectangle(330, 0, 338, data.verticalLine3.yc, fill="black") #vertical line 3
    canvas.create_rectangle(0, 197, data.horizontalLine1.xc, 207, fill="black") #horizontal line 1
    canvas.create_rectangle(0, 417, data.horizontalLine2.xc, 427, fill="black") #horizontal line 2
Click to Expand


I implemented my idea by coding a very simple program that digitally displays the off-white background and red rectangle, and then draws the black lines that run over the "canvas" and create the grid. I used Python with Tkinter, and then screen captured the running animation to get a video that I could turn into a gif. 



Mondrian's painting was very simple to recreate digitally due to its minimalistic nature, so I think the style of his work was converted pretty seamlessly between digital and analog media. To me, the digital representation has the same feeling of purity, cleanliness, and balance, even though it lacks the details of the brush strokes and layered colors. On the other hand, I animated the lines with the intent of emphasizing the dynamism of the asymmetrical gridlines, but after seeing the finished product, I think that the movement actually detracts from the calming effect of the original painting. I found it interesting that as Mondrian's style changed and developed over the course of his life, his paintings became more and more apt for digital reproduction.

Share this Project


62-150 Intro to Media Synthesis and Analysis

· 28 members

New creative industries are empowering new modes of collaborative consumption, creation and reuse of media. This often relies on successful collaborations between cross-trained artists, designers a...more


My goal is to recreate and emphasize the sense of harmony, linear dynamism, and simplicity found in Mondrian's Neo-Plastic style work.