Partage
  • Partager sur Facebook
  • Partager sur Twitter

Renseignements sur les matrices de graphiques

Demande de renseignements sur les matrices de graphiques

    17 octobre 2020 à 17:21:59

    Bonjour tout le monde,

    Je viens sur ce forum pour demander si une personne pourrait m'éclairer sur les créations de matrice graphique.

    J'ai déjà vu plusieurs site qui en parle notamment celui là : http://www.linzreport.com/microstrategy/help/WebUser/WebHelp/Lang_1036/creating_a_graph_matrix_visualization.htm#Graph_styles

    Cependant, je ne parvient pas trop à comprendre comment on peut faire en python et je voulais aussi avoir un exemple concret à mon problème.

    Imaginer un exemple basique : 

    Je possède 4 variables qui sont :  

    - poids

    -taille

    -sexe

    -âge

    ma variable à expliqué est le poids et les 3 autres sont les variables explicatives.

    Comment je pourrai alors créer une matrice de graphique à partir de 50 individus différents 

    Merci d'avance de m'avoir lu !!

    Manu

    -
    Edité par ManuBelk 17 octobre 2020 à 17:24:35

    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2020 à 13:49:26

      Bonjour,

      as-tu cherché du coté de matplotlib.pyplot.imshow ?

      Cela permet de représenter des matrices 2D graphiquement, du coup sur sera obligé de faire un compromis du style : 2 affichages un pour les hommes l'autre pour les femmes et affichage de la moyenne ou le max du poids en fonction d'une taille et d'un âge donnés.

      En bref comme la fonction doit forcément prendre une matrice 2D en paramètre, il va falloir la construire à partir de ton dataset...

      Exemple:

      import numpy as np
      import matplotlib.pyplot as plt
      
      #fabrication d'un dataset random (répartition normale ici)
      N = 500000
      dataset = np.array([np.random.randint(0, 2, size=N), #gender
                         np.random.normal(165, 10, size=N), #height
                         np.random.normal(50, 10, size=N), #age
                         np.random.normal(70, 10, size=N) #weight
                         ]).transpose()
      
      #séparation en 2 subdatasets, un pour les hommes, un pour les femmes
      male_dataset = dataset[np.in1d(dataset[:, 0], np.asarray([0]))]
      female_dataset = dataset[np.in1d(dataset[:, 0], np.asarray([1]))]
      
      def plot_dataset_matrix(dataset, title):
          shape = (1000, 1000) # precision d'affichage
          count_matrix = np.zeros(shape)
      
          #recherche d'extremum
          min_height, max_height = np.amin(dataset[:, 1]), np.amax(dataset[:, 1])
          min_age, max_age = np.amin(dataset[:, 2]), np.amax(dataset[:, 2])
      
          for line in dataset:
              #recherche de l'emplacement correspondant dans la matrice:
              posl = int((line[1]-min_height)/(max_height-min_height)*(shape[0]-1)) #numero de ligne
              posc = int((line[2]-min_age)/(max_age-min_age)*(shape[1]-1)) #numero de colonne
              #stockage de l'information expliquée, ici, le maximum des poids pour cet age et cette taille
              count_matrix[posl, posc] = max(line[3], count_matrix[posl, posc])
      
          fig, ax = plt.subplots()
          #affichage sous forme graphique
          im = ax.imshow(count_matrix, cmap="hot", extent=[min_age, max_age, max_height, min_height])
          #Note: le extent permet de repasser des indices de lignes et colonnes à l'informations explicatives (l'ordre croissant des lignes est vers le bas)
          fig.colorbar(im)
          plt.title(title)
          plt.xlabel("age")
          plt.ylabel("taille")
      
      
      plot_dataset_matrix(male_dataset, "male: max weigth")
      plot_dataset_matrix(female_dataset, "female: max weigth")
      
      plt.show()

      Je ne sais pas vraiment si c'est la meilleure façon de le faire, mais c'est une piste...

      Note : je pense pas non plus que c'est la manière optimale de construire la matrice ^^'

      En espérant que cela puisse t'aider un peu...

      Bonne journée

      -
      Edité par WexyR 18 octobre 2020 à 13:52:11

      • Partager sur Facebook
      • Partager sur Twitter
      Si je suis tête en l'air, c'est par habitude de viser le sommet
        18 octobre 2020 à 23:48:47

        Merci beaucoup de ta réponse ! 

        Cela m'a beaucoup aidé pour pouvoir réaliser mon projet 

        • Partager sur Facebook
        • Partager sur Twitter

        Renseignements sur les matrices de graphiques

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown