ARE_Dynamic_2017/parties/Bar_Chart + Récup_mat.py

113 lines
2.7 KiB
Python

import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
TailleGrilleX = 15
TailleGrilleY = 15
GrilleInitiale = 0
HistoriqueGrille = list()
StratsResultats = list()
def recup_mat(matrice, param):
""" array*str-> array
Récupère la matrice avec seulement le paramètre (état,strat,années de prison) voulu afin de pouvoir avoir les stats plus facilement"""
matR = np.random.randint(0,1,TailleGrilleX,TailleGrilleY)
for ligne in range (0,TailleGrilleX): #int ligne
for colonne in range (0, TailleGrilleY): #int colonne
for p in matrice[ligne,colonne]:
if p==param:
matR[ligne,colonne]=dict[param]
return matR
def bar_chart():
"""array->graph
Retourne le diagramme en baton qui met en évidence le nombre d'années de prison en fonction de la stratégie. et
celui qui met en évidence la proportion des stratégies.
Ils sont mis à jour à chaque fos que tous les éléments de la grille ont fait leur 8 parties locales"""
matStrat=recup_mat(matrice,'strategie')
matGain=recup_mat(matrice,'annees_de_prison')
#initialisation des paramètres
strat0=0
strat1=0
strat2=0
strat3=0
strat4=0
strat5=0
gain0=0
gain1=0
gain2=0
gain3=0
gain4=0
gain5=0
for ligne in range (0,TailleGrilleX):
for colonne in range(0, TailleGrilleY):
if matStrat[ligne,colonne]==0:
strat0=strat0+1
gain0=gain0+matGain[ligne,colonne]
elif matStrat[ligne,colonne]==1:
strat1=strat1+1
gain1=gain1+matGain[ligne,colonne]
elif matStrat[ligne,colonne]==2:
strat2=strat2+1
gain2=gain2+matGain[ligne,colonne]
elif matStrat[ligne,colonne]==3:
strat3=strat3+1
gain3=gain3+matGain[ligne,colonne]
elif matStrat[ligne,colonne]==4:
strat4=strat4+1
gain4=gain4+matGain[ligne,colonne]
else :
strat5=strat5+1
gain5=gain5+matGain[ligne,colonne]
Strat=('1','2', '3','4' ,'5','6')
x_pos = np.arange(len(Strat))
gain=[gain0,gain1,gain2,gain3,gain4,gain5]
plt.bar(x_pos, gain, align='center', color='b' )
plt.xlabel("Stratégies")
plt.ylabel("Nombre d'années de prison")
plt.xticks(x_pos,Strat)
plt.show()