def plotDataCards(image, size, number_of_cards, max_radius, h_ball_separation, v_ball_separation, data, key_exceptions):
    w, h = size
    max_number_of_cards_in_a_row = int(w / (float(max_radius)+h_ball_separation))
    max_number_of_cards_in_a_column = int(h / (float(max_radius)+v_ball_separation))
    draw = ImageDraw.Draw(image)
    for i in range(max_number_of_cards_in_a_column):
        for j in range(max_number_of_cards_in_a_row):
            k = i*max_number_of_cards_in_a_row+j
            if k < number_of_cards:
                offset = 0
                for key in data:
                    if not key in key_exceptions:
                        datum = data[key]
                        desc = datum[0]
                        value = datum[1][k]
                        text_to_draw = desc+" %.3f"%value
                        width, height = draw.textsize(text_to_draw) #@UnusedVariable
                        offset += height + 3
                        position = (j*(max_radius+h_ball_separation), i*(max_radius+v_ball_separation)+max_radius+offset)
                        writeTagPlusValue(image, position, desc, value)
    return image
Writes the small data cards under each cluster sphere representation.
dataset/ETHPy150Open victor-gil-sepulveda/pyProCT/pyproct/tools/plotTools.py/plotDataCards