Partage
  • Partager sur Facebook
  • Partager sur Twitter

Analyse d'un graphe

Sujet résolu
    2 août 2015 à 10:01:22

    Salut cher tous 

    Je suis un peu débutant avec Python et c'est ma troixiéme participation au forum. 

    J'ai réussi a représenter une série de données sous forme de nuage de points en utilisant Python.

    voila le graphe 

    Comme vous voyez, le graphe présente deux pics et un minimum. 

    Je veux savoir l'abscisse de la valeur minimale. 

    Est ce que c'est possible avec Python?

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      2 août 2015 à 11:55:22

      Ton minimum local se situe à peu près entre les points 250 et 400 donc pour récupérer ce minimum tu écris "min(liste[250:400])". 

      Pour récupérer l'index du point tu fais liste.index(lepoint). 

      • Partager sur Facebook
      • Partager sur Twitter
        2 août 2015 à 17:46:29

        Merci mais ca nemarche pas
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          2 août 2015 à 22:02:40

          SlimP a écrit:

          Merci mais ca nemarche pas

          Qu'est ce qui ne marche pas? Tu as une erreur? Le résultat n'est pas celui que tu attendais? Précise un peu, sinon personne ne pourra essayer de t'aider à résoudre ton problème :/
          • Partager sur Facebook
          • Partager sur Twitter
            3 août 2015 à 4:54:53

            Salut cher tous

            Voila en plus de détail. 

            J'ai utilisé ce programme pour dessiner l'histogramme d'une série de données float

            import matplotlib.pyplot as plt
            data = []
            b = []
            inf = open('arrangement1.txt')
            for line in inf:
                data.append(float(line))
            inf.close()
            
            n,b,patches=plt.hist(data, bins=400, range=(-1, 1), color='yellow', edgecolor='red')
            plt.xlabel('value')
            plt.ylabel('count')
            plt.title('distribution of value')
            plt.show

            voila l'histogramme

            Je veux trouver les valeurs corresponds au deux maximum et le minimum.

            Comme le minimum se situé entre 0 et 1 dans ce cas, J'ai utilisé ce code :

            mindata=min(data[0:1]) 
            print mindata

            le résultat c'est 1.0 ce qui est faux.

            Avez vous une idée ?

            Merci

            -
            Edité par SlimP 3 août 2015 à 7:08:03

            • Partager sur Facebook
            • Partager sur Twitter
              3 août 2015 à 7:07:03

              J'ai essayé aussi ce code

              bin_min = np.where(n == n.min())
              print 'minbin', b[bin_min][0]

              le resultat est 0.99 c'est la valeur minimale pour la totalite des donnees.

              dans mon cas, je veux le minimum situe entre 0.0 et 0.5

              -
              Edité par SlimP 3 août 2015 à 7:22:46

              • Partager sur Facebook
              • Partager sur Twitter
                3 août 2015 à 9:32:29

                SlimP a écrit:


                mindata=min(data[0:1]) 
                print mindata

                le résultat c'est 1.0 ce qui est faux.

                Avez vous une idée ?

                Le résultat est prévisible : data n'est pas indexé par les réels de -1  à 1 mais par des entiers. Pour couper ton tableau au bon endroit, tu dois déterminer l'indice qui correspond à 0. et celui qui correspond à 0.5.

                -
                Edité par nooe 3 août 2015 à 9:32:47

                • Partager sur Facebook
                • Partager sur Twitter
                "Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire" (Joseph Joubert).   Libérez-vous !
                  3 août 2015 à 13:09:21

                  nooe : C'est surtout qu'il est impossible d'obtenir la valeur avec data, étant donné qu'il s'agit des données brutes.

                  Ton problème réside dans le fait que tu dois redéfinir tes array pour tes besoins. Une manière de faire, pas forcément la plus propre je pense, est de générer des listes à partir de tes données et de faire l'analyse dessus. Je ne sais pas si ça marche bien, mais j'ai pensé à ça perso :

                  import pylab as plt
                  
                  l = [0,0,0,0,1,2,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6,6]
                  n,b,patches = plt.hist(l, bins=len(set(l))-1)
                  print n,b
                  
                  def get_frame(start, end, n, b) :
                  	n, b = list(n), list(b)
                  	start_index = b.index(min([value for value in b if value >= start]))
                  	end_index = b.index(max([value for value in b if value <= end]))
                  	return n[start_index:end_index+1], b[start_index:end_index+1]
                  
                  new_n, new_b = get_frame(2,6,n,b)
                  print new_b[new_n.index(min(new_n))]
                  plt.show()

                  A voir si ça fonctionne chez toi.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Analyse d'un graphe

                  × 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