#!/bin/env python3 import yaml translate = { "A" : "A", "B" : "B", "C" : "C", "D" : "D", "E" : "E", "F" : "F" } colors = { "A" : "#0C631E", "B" : "#6AD5CF", "C" : "#1B56D3", "D" : "#FF00FF", "E" : "#EF7A37", "F" : "#CF9F00" } pos = { "A" : "0,0!", "B" : "1,2!", "C" : "3,2!", "D" : "4,0!", "E" : "3,-2!", "F" : "1,-2!" } # On récupère la liste des gagnants f = open("ligne_gagnants_partiels.txt", "r") lineWinners = f.readlines()[0] winners = lineWinners.split(" | ")[1].split("*")[0].split(" ")[0].split(",") with open('matrice_duels_partiel.yaml','r') as data: dic = yaml.safe_load(data) o = open("graphe_partiel.dot", "w") o.write(""" Digraph G { graph [dpi = 250, oneblock=true, outputorder=edgesfirst]; node [shape="plaintext"]; """) for liste in dic: if liste in winners: o.write(liste + " [style=filled fillcolor=white label=\"" + translate[liste] + "\" fontcolor=\"" + colors[liste] + "\" fontsize=18 pos=\"" + pos[liste] + "\" shape=rectangle]\n") else: o.write(liste + " [label=\"" + translate[liste] + "\" fontcolor=\"" + colors[liste] + "\" pos=\"" + pos[liste] + "\"]\n") o.write("\n") for liste in dic: for opp in dic[liste]["win"]: if dic[liste]["win"][opp] > dic[opp]["win"][liste]: o.write(liste + " -> " + opp + "[labeldistance=4 labelangle=-15 penwidth=1 headlabel=\"" + str(dic[liste]["win"][opp]) + ";" + str(dic[liste]["lose"][opp]) + "\" fontsize=9 color=\"" + colors[liste] + "\" fontcolor=\"" + colors[liste] + "\"]\n") o.write("}\n") o.close() from graphviz import render #render('dot', 'png', 'graphe_partiel.dot') render('neato', 'png', 'graphe_partiel.dot')