Graphiques en secteurs et humour

Il y a une dizaine d’années certains internautes se sont amusés à créer des graphiques en secteurs originaux, voyons comment les reproduire en Python avec la TI-83

Le coin de ma chambre

2 murs et le sol
import ti_plotlib as plt
from ti_draw import *
from math import *

data = {-14: (143, 133, 133), 90: (158, 143, 133), 214: (93, 42, 40)}

def dec(l,n,u): return [v[n] + u for v in l]

def secteurs(data):
  plt.cls()
  o = (0, 0)
  xy = [o]
  mini = min(data.keys())
  for i in range(mini, 361 + mini):
    xy.append((cos(radians(i)) * 100, -sin(radians(i)) * 100))
    if i in data.keys():
      if i != mini: fill_poly(dec(xy, 0, 160), dec(xy, 1, 105))
      set_color(*data[i])
      xy = [o] + xy[-1:]
  fill_poly(dec(xy, 0, 160), dec(xy, 1, 105))

secteurs(data)
show_draw()

Les données sont représentées sous la forme angle : couleur. Pour l’exemple ci-dessus, on part de l’angle -14° avec la couleur (143, 133, 133), on trace le secteur jusqu’à l’angle 90° puis on change de couleur, etc.

L’idée du programme est de tracer un polygone en partant du centre de l’écran (160, 105), la variable i parcourt les entiers allant de l’angle le plus petit (-14° dans l’exemple) jusqu’à faire un tour complet (360 – 14 = 346°). On mémorise dans la variable xy les coordonnées des points sur le bord du cercle de 1° en 1° et dès qu’il y a un changement de couleur on trace le polygone xy.

La pyramide

Même programme que précédemment mais en changeant data.

Une pyramide ?
data = {-42: (65, 100, 145), 222: (210, 163, 83), 298: (88, 57, 36)}
Version Maître Gims
data = {-42: (65, 100, 145), -1: (220,220,220), 0:(65, 100, 145), \
        179: (220,220,220), 180:(65, 100, 145), 202: (220,220,220), \
        204:(65, 100, 145), 222: (210, 163, 83), 298: (88, 57, 36)}

pacman

PACMAN
data = {-32: (255, 255, 255), 32: (216, 160, 24)}

Dégradé

data = {}

for i in range(20): data[18 * i] = (12 * i,) * 3