Aller au contenu principal
Tags

Visualiser la répartition des cartes à Celestia avec Matplotlib (scatter)

23 septembre 2018

Celestia est un jeu de société dans lequel les joueurs vont avancer ensemble de planète en planète. Chacun doit décider individuellement :

  • soit descendre du vaisseau, et ainsi s’assurer la prise d’une carte
  • soit prendre le risque de continuer, et avoir la chance d’avoir une carte de plus forte valeur.

Chaque paquet de cartes a une plage de valeurs différentes. Voici une représentation de ces répartitions :

La taille des points varie en fonction de la quantité d’occurences de la même valeur. Matplotlib dispose pour cela d’une fonction spécifique nommée scatter.

matplotlib.pyplot.scatter(
    [x0, x1, ..., xn],
    [y0, y1, ..., yn],
    s=[taille_de_x0y0, taille_de_x1y1, ..., taille_de_xn_yn ])

Une démo de « scatter » est aussi visible sur le site de matplolib.

Le code source complet

import collections
import matplotlib.pyplot as plt

# répartition des cartes
stats = {1: [1, 2, 4, 1, 2, 4, 2, 1, 1, 1, 2],
        2: [4, 2, 6, 4, 2, 4, 2, 6, 2, 2, 2],
        4: [2, 4, 9, 4, 6, 4, 4, 4, 6, 6],
        6: [2, 9, 9, 6, 6, 6, 9, 12, 6, 6],
        9: [9, 9, 9, 12, 9, 9, 9, 12, 12],
        12: [12, 12, 12, 12, 15, 15, 12, 12, 15],
#        15: [15 for i in range(6)],
#        20: [20 for i in range(6)],
#        25: [25 for i in range(6)]
}

x = [clef for clef, valeurs in stats.items() for i in range(len(valeurs))]
y = [valeur for valeurs in stats.values() for valeur in valeurs]


# compte les occurences de chaque valeur par planète
compteur = collections.Counter(zip(x, y))
# liste des tailles des points en fonction des occurences
tailles = [50 * compteur[(xx, yy)] for xx, yy in zip(x, y)]

# matplotlib en action !
plt.scatter(x, y, s=tailles)
plt.grid(color='grey', linestyle='dashed')
plt.title("Répartition des valeurs des cartes")
plt.xlabel("Niveaux")
plt.ylabel("Valeurs")


axes = plt.gca()
axes.set_ylim([0, 16])

plt.savefig('repartition_cartes_celestia.png')
plt.show()
Publicités

From → Python

Laisser un commentaire

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueurs aiment cette page :