zettelkasten

Search IconIcon to open search
Dark ModeDark Mode

Visualising #Pulaoread (Part 2)

Date: 25 Jun 2020

#post/legacy #data-art #data-visualisation #python

This post originally appeared on the very first blog


Pulaoread 2 bright wheel scaled.jpg

Essentially a network visualisation connecting the books to their readers and to other books written by the same author. This is the second visualisation created using the data from the #Pulaoread project. Links to other parts are listed down below.


The network visualisation of #Pulaoread this time is definitely more complicated and detailed than the previous version of simply stacking rectangles, but I think the extra information does somewhat sacrifices its elegance and neatness. Anyway, talk is cheap, so I will let the poster explain itself.

Pulaoread 2 bright 16-9.jpg

H3 The Visualisation Process (continued)

For the detailed process of making the rectangles of the outer ring, refer to the first post as a very similar technique was used. The inner ring reuses the data from the previous visualisation, but this time with colours representing the different types of books. Note that the book length is scaled logarithmically.

When creating this network, the major challenge was to find all pairs of related points according to the book author, for which a line is to be drawn connecting them; this was something that I couldn’t figure out how to do with just built-in nodes in NodeBox. It turned out that importing a few lines of python code was the solution.

To isolate all author-point pairs whose author is present in the author-point list more than once:

def repeated_in_lists(list):
    new_list = []
    for i in range(1,len(list)-1):
        if list[i]["Author"] == list[i-1]["Author"] or list[i]["Author"] == list[i+1]["Author"]:
            new_list = new_list + [{"Author":list[i]["Author"], "Point":list[i]["Point"]}]

    return new_list

To find the list of all possible combinations of coordinate pairs given the same author:

def pair_up(list):
    new_list = []
    for i in range(0,len(list)):
        for j in range(i+1, len(list)-1):
            if list[i]["Author"] == list[j]["Author"]:
                new_list = new_list + [{"Point1": list[i]["Point"], "Point2": list[j]["Point"]}]
    return new_list

As I have expected, the end result was this messy node network: the left portion makes the rings and the right portion is responsible for the network.

Screen-Shot-2020-06-23-at-19.08.27.jpg

Finally, the full-size poster.

Pulaoread 2 bright.png