ARE_Dynamic_2017/parties/Bar_Chart + Récup_mat.py

152 lines
3.8 KiB
Python
Raw Normal View History

2017-03-08 10:32:11 +01:00
import matplotlib.pyplot as plt; plt.rcdefaults()
import numpy as np
import matplotlib.pyplot as plt
from pylab import *
2017-03-15 10:16:14 +01:00
import matplotlib.animation as animation
2017-03-08 10:32:11 +01:00
2017-03-08 10:56:11 +01:00
TailleGrilleX = 15
TailleGrilleY = 15
2017-03-08 10:32:11 +01:00
GrilleInitiale = 0
HistoriqueGrille = list()
StratsResultats = list()
ListeStrategies = list()
2017-03-15 12:24:06 +01:00
def matRecup(i, param):
"""array*str-> array
Récupère la matrice avec seulement le paramètre stratégie pour chaque joueur , à litération i voulue"""
matR = np.random.randint(0,1,(TailleGrilleX,TailleGrilleY))
matrice = HistoriqueGrilles[i]
2017-03-15 09:53:15 +01:00
2017-03-15 12:24:06 +01:00
for ligne in range (0,TailleGrilleX): #int ligne
for colonne in range (0, TailleGrilleY): #int colonne
matR[ligne][colonne]=matrice[ligne][colonne][param]
return matR
2017-03-15 10:16:00 +01:00
2017-03-22 09:12:35 +01:00
def animation_strat():
2017-03-22 11:13:31 +01:00
fig=plt.figure()
fig.suptitle('Animation des stratégies')
cmap = mpl.colors.ListedColormap(["black","green" ,"red" ,"blue" ,"yellow"])
bounds=[0,1,2,3,4,5]
norm=mpl.colors.BoundaryNorm(bounds, cmap.N)
img=plt.imshow(matRecup(0, 'strategie'), interpolation = "nearest", cmap = cmap , norm = norm)
2017-03-15 12:24:06 +01:00
2017-03-22 11:13:31 +01:00
cb=plt.colorbar(img , cmap=cmap , norm=norm , boundaries = bounds , ticks=bounds)
labels = np.arange(1, 6, 1)
cb.set_ticklabels(labels)
2017-03-15 12:24:06 +01:00
2017-03-15 10:16:00 +01:00
2017-03-22 11:13:31 +01:00
def update(next_iteration,*args):
2017-03-22 09:12:35 +01:00
img.set_array(matRecup(next_iteration , 'strategie'))
2017-03-22 11:13:31 +01:00
return [img]
2017-03-15 10:16:00 +01:00
2017-03-22 11:13:31 +01:00
anim = animation.FuncAnimation(fig, update, frames=range(MaxIterations), interval=1000, repeat = False)
plt.show()
2017-03-08 10:32:11 +01:00
2017-03-15 10:33:56 +01:00
2017-03-08 12:07:10 +01:00
2017-03-08 12:26:00 +01:00
2017-03-08 12:00:03 +01:00
2017-03-15 12:24:06 +01:00
2017-03-22 11:17:33 +01:00
def affichage_strats_resultats_totaux():
2017-03-08 10:32:11 +01:00
"""array->graph
2017-03-22 11:14:24 +01:00
Retourne les diagrammes en baton qui mettent en évidence le nombre moyen d'années
2017-03-08 12:26:00 +01:00
de prison en fonction de la stratégie et le nombre d'utilisation de chaque stratégies """
2017-03-08 11:56:06 +01:00
2017-03-08 10:32:11 +01:00
2017-03-09 12:26:24 +01:00
2017-03-08 10:32:11 +01:00
#initialisation des paramètres
#list gain
gain=[]
#list strat
2017-03-09 12:26:24 +01:00
stratUtili=[]
2017-03-08 10:32:11 +01:00
2017-03-22 11:14:24 +01:00
#nb_utilisations
utilisateurs=list()
#uti[strat][iter] = nb
#iteration
iteration=[]
2017-03-08 10:32:11 +01:00
for i in range(5):
gain.append(0)
2017-03-09 12:26:24 +01:00
stratUtili.append(0)
2017-03-08 10:32:11 +01:00
2017-03-08 11:45:12 +01:00
for i in range(0,len(ListeStrategies)):
2017-03-15 12:24:06 +01:00
stratUtili[i]=StratsResultats[i][0]
2017-03-22 11:14:24 +01:00
if StratsResultats[i][0]==0:
gain[i]
else:
gain[i]=StratsResultats[i][1]/StratsResultats[i][0]
utilisateurs.append([])
for i in range(0,MaxIterations+1):
for j in range(0,len(ListeStrategies)):
utilisateurs[j].append(StratsResultats[j][2][i][0])
print(StratsResultats[j][2][i][0])
iteration.append(i)
print(utilisateurs[2])
2017-03-15 12:24:06 +01:00
2017-03-22 11:14:24 +01:00
#Diviser nb années de prison par le nb d'utilisatons de le stratégi (moyenne)
Strat=('0','1', '2','3' ,'4')
2017-03-08 10:32:11 +01:00
x_pos = np.arange(len(Strat))
plt.subplot(221)
2017-03-22 11:14:24 +01:00
plt.title("Nombre d'utilisateurs en fonction d'une stratégie")
plt.bar(x_pos, stratUtili, align='center' , color=CouleursStrat)
2017-03-15 12:24:06 +01:00
plt.xlabel("Stratégies")
plt.ylabel("Nombre individus ayant adopté stratégie")
2017-03-08 10:32:11 +01:00
2017-03-15 12:24:06 +01:00
plt.xticks(x_pos,Strat)
plt.subplot(222)
2017-03-22 11:14:24 +01:00
plt.title(" Nombre moyen d'années de prison en fonctione d'une srtatégie")
plt.bar(x_pos, gain, align='center', color=CouleursStrat )
2017-03-08 10:32:11 +01:00
plt.xlabel("Stratégies")
2017-03-22 11:14:24 +01:00
plt.ylabel("Nombre moyen d'années de prison ")
2017-03-08 10:32:11 +01:00
plt.xticks(x_pos,Strat)
2017-03-22 11:14:24 +01:00
plt.subplot(223)
plt.title("Evolution du nombre d'utilisateurs de chaque stratégie au cours des itérations")
plt.ylabel("Nombre utilisateurs")
2017-03-08 10:32:11 +01:00
2017-03-22 11:14:24 +01:00
for i in range(len(ListeStrategies)):
plt.plot(iteration,utilisateurs[i], CouleursStrat[i] ,linewidth=5 ,label="Sratégie" + str(i))
plt.xlabel('Iterations')
plt.show()
plt.legend()
2017-03-08 10:32:11 +01:00
2017-03-08 10:56:11 +01:00