IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

tri de hash par rapport aux valeurs


Sujet :

Langage Perl

  1. #1
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut tri de hash par rapport aux valeurs
    Bonjour tout le monde, je voudrais trier un hash directement sans forcément passer par des tableaux ... (si cela est possible)
    Voilà, j'ai une fonction clean_candidates() qui prend en argument un tableau @candidates, ... et retourne un hash %candidates contenant comme clés les mots de @candidates et comme valeurs, le nombre d'occurences de chaque mot dans @candidates
    Ce que j'ai expliqué plus haut se passe normalement sans soucis ....
    Mon problème reste le tri du %hash obtenu par ses valeurs ( nombre d'occurences de chaque mot)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sub clean_candidates {
        my ($this,@candidates) =  @_;
        my %candidates = (); # my %candidates ( $candidate => $nbOcc );
        foreach my $candidate (@candidates){
            $candidates{$candidate} ++; 
        }
    	my %sorted_candidates = sort ({ $candidates{$a} <=> $candidates{$b} } %candidates);
    	#while ( my($key,$value) = each(%candidates) ){
    			#printf("%-40s%7s%3s\n",$key," .....:",$value);
    	#} print "\n"; sleep 10;
    	return %sorted_candidates;
    }
    le tri ne marche pas et j'ai besoin de votre aide
    Merci d'avance
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Cette ligne est inutile :
    Code paissad : Sélectionner tout - Visualiser dans une fenêtre à part
    %sorted_candidates = sort ({ $candidates{$a} <=> $candidates{$b} } %candidates);

    Tu ne pourras jamais conserver l'ordre dans un hash. Tu dois trier lors de l'utilisation de tes valeurs (avec $candidates{$a} <=> $candidates{$b} comme tu le fais)
    -- Jasmine --

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Quelque chose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    my %candidates = (
    	K1 => 2,
    	K2 => 3,
    	K3 => 8,
    	K4 => 3,
    	K5 => 7,
    	K6 => 0,
    );
     
     
    foreach my $k ( sort ({ $candidates{$a} <=> $candidates{$b} } keys %candidates)){
    	print "$k\t$candidates{$k}\n";
    }
    Sortie
    K6 0
    K1 2
    K2 3
    K4 3
    K5 7
    K3 8
    Cela t'aide-t-il pour ton script?

    Si tu veux vraiment garder l'ordre en mémoire, tu peux utiliser un array contenant l'ordre des clés de ton hash.
    -- Jasmine --

  4. #4
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Effectivement, il semblerait qu'il ne soit pas possible d'obtenir un %hash trié par rapport à ses valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     my %sorted_candidates = ();
        foreach my $k ( reverse (sort ({ $candidates{$a} <=> $candidates{$b} } keys %candidates ))){
            $sorted_candidates{$k} = $candidates{$k};
            printf("%-40s%7s%3s\n",$k," .....:",$sorted_candidates{$k});
        }
        sleep 5; print "\nSORTED\n";
        while ( my($key,$value) = each(%sorted_candidates) ){
            printf("%-40s%7s%3s\n",$key," .....:",$value);
        } print "\n";
        return %sorted_candidates;
    }
    voici ce que j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    data mining                              .....:  8
    mining                                   .....:  4
    directeur data mining                    .....:  2
    mining data mining                       .....:  2
    mining ais data mining                   .....:  1
    ais data mining                          .....:  1
     
    SORTED
    data mining                              .....:  8
    ais data mining                          .....:  1
    mining ais data mining                   .....:  1
    mining data mining                       .....:  2
    mining                                   .....:  4
    directeur data mining                    .....:  2
    Donc on voit que dans la boucle de tri, tout se passe bien ... mais en dehors %sorted_candidates n'est pas trié
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  5. #5
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : mai 2006
    Messages : 371
    Points : 556
    Points
    556
    Par défaut
    Parce qu'un hash n'est jamais trié, c'est tout simplement incompatible avec sa nature.

    Tu peux obtenir un affichage, un rendu du contenu d'un hash, trié par sa clé ou par sa valeur.
    There's nothing like $HOME!

  6. #6
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Merci à tous, finalement, j'ai fait ce que je voulais .... je me suis basé sur ce qu'à dit Jasmine80.
    Vu que je voulais mettre les valeures dans un fichier XML, au lieu de faire le print " $hash{cle}" durant le tri , j'ai directement mis les valeurs dans le fichier XML..
    Tout est ok et je sais maintenant qu'il n'est pas possible de trier un hash ...
    Merci
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  7. #7
    Membre à l'essai
    Femme Profil pro
    Etudiante
    Inscrit en
    avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bonjour !

    Je remonte ce sujet car j'ai le même soucis. J'ai appliqué exactement ce qu'a proposé Jasmine, mais une erreur m'est renvoyée :

    Can't use "my $a" in sort comparison at recurrence.pl line 26.
    N'ayant pas bien compris ce que représentaient $a et $b, je les ai bêtement recopiés... Pourriez vous m'expliquer ?

    Voici la partie de mon code qui nous intéresse ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ($ligne = <IN>){
    	if ($ligne =~ m/^\>/){
    		$query = $';
    		chomp $query;
    		$recur{$query}++;
    	}
    }
     
    foreach my $n ( reverse ( sort ({$recur{$a} <=> $recur{$b} } keys %recur))) {
    	print OUT "$recur{$n}\n\t$n\n\n";
    }
    Voilà, en vous remerciant d'avance et en m'excusant, car l'erreur doit vraiment être bidon...

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ton écriture est erronée car tu as introduit des parenthèses que tu n'aurais pas dû. Ton code corrigé (normalement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($ligne = <IN>){
    	if ($ligne =~ m/^\>/){
    		$query = $';
    		chomp $query;
    		$recur{$query}++;
    	}
    }
     
    foreach my $n ( reverse ( sort {$recur{$a} <=> $recur{$b} } keys %recur)) {
    	print OUT "$recur{$n}\n\t$n\n\n";
    }
    La fonction sort fait traditionnellement un tri alphanumérique croissant.
    Mais il est possible de passer à sort un bout de code (dans ton cas : {$recur{$a} <=> $recur{$b} }) qui définisse une fonction de tri élémentaire entre deux éléments quelconques de la liste à trier.
    Dans cette fonction, $a représente le premier élément et $b le 2e élément comparé. sort utilise alors cette fonction (à la place de l'expression par défaut $a cmp $b) pour faire le tri.

    Dans ton cas, comme tu cherches à avoir tes élément ordonnés dans le sens inverse, tu peux réduire ton code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($ligne = <IN>){
    	if ($ligne =~ m/^\>/){
    		$query = $';
    		chomp $query;
    		$recur{$query}++;
    	}
    }
     
    foreach my $n ( sort {$recur{$b} <=> $recur{$a} } keys %recur) {
    	print OUT "$recur{$n}\n\t$n\n\n";
    }
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Membre à l'essai
    Femme Profil pro
    Etudiante
    Inscrit en
    avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup pour vos explications. C'est plus clair .

    Et contrairement à ce que j'ai répondu premièrement, ça marche parfaitement... Une bête erreur de ma part .

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    bonsoir
    je réouvre encore le sujet parceque j'ai presque le meme soucis
    ce que je veux aprés le tri est d'afficher juste les deux premieres valeurs de mon hash aprés tri
    que dois-je faire svp
    merci par avance
    bonne soirée à tous

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    rebonsoir
    voila mon code :
    est ce que c'est la seule solution possible ?? parceque ce que j'ai fait ca fonctionne en faite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    my %Alignements;
     
     
    foreach (@lines){
     
    	   if ($_=~m/(clone\d+.+[deb|fin])\s(\w+):\w+.*\s(.+)\s(\d+\.?\d*)$/){
     
    	    $Alignements{$_} =$4; 	  
    }
    }
    my @t;
    foreach my $k ( sort ({ $Alignements{$b} <=> $Alignements{$a} } keys %Alignements)){
    	push(@t,$k);
    }
    print "PARTIE III question 6 : les 5 meilleurs alignement sont "
    print "$t[0]\n$t[1]\n$t[2]\n$t[3]\n$t[4]\n";

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ne voulais-tu pas plutôt trier sur le score et donc écrire :
    au lieu de
    non ?

    Tu peux éventuellement réduire cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "$t[0]\n$t[1]\n$t[2]\n$t[3]\n$t[4]\n";
    ainsi :
    ou encore :
    Afin d'être générique du point de vue du nombre de résultat. Mais c'est un détail.

    Un autre détail : dans une expression régulière, si tu souhaites "regrouper un motif" sans le capturer, au lieu d'utiliser les (sous-motif), tu peux utiliser (?:sous-motif). Ainsi, tu n'es plus obligé de rechercher le 4e élément capturé dans ton expression régulière si tu l'écris ainsi :
    /(?:clone\d+.+[deb|fin])\s(?:\w+):\w+.*\s(?:.+)\s(\d+\.?\d*)$/
    Cela dit, les regroupements que tu as écris ne sont pas nécessaires, tu aurais aussi pu écrire :
    /clone\d+.+[deb|fin]\s\w+:\w+.*\s.+\s(\d+\.?\d*)$/
    Enfin, je note dans ton expression le motif [deb|fin] : j'imagine que tu voulais rechercher le motif "deb" OU "fin". Ici, en utilisant [motif], tu as juste défini "un charactère par la liste suivante : d, e, b, |, f, i, n. Si tu voulais rechercher "deb" ou "fin", il fallait justement utiliser un regroupement (non capturant) :
    /clone\d+.+(?:deb|fin)\s\w+:\w+.*\s.+\s(\d+\.?\d*)$/

    Sinon, je pense que tu aurais du rouvrir un nouveau sujet plutôt que de te greffer sur celui-ci
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    bonsoir
    en faite j'ai pris la ligne $_ comme clé et le score $4 (le score ) comme valeur et moi je tri par apport aux score c'est pour ca j'ai fait comme ca
    pour l'histoire [deb|fin] je voulais prendre l'un ou l'autre parceque mes lignes ressemble à ceci
    clone1_deb chu:CHU_0158 71.16 267 77 0 2 802 545 811 5e-108 392
    en fin ce que je voulais c'est d'afficher les lignes correspondantes aux 5 meilleurs scores c'est pour ca je pouvait pas afficher $4 (ca me sert juste pour le tri ) pour l'histoire du regroupement merci je savais pas qu'on pourrait regrouper sans capturer en tous cas merci bcp philou
    merci pour tous le monde

    bonne soirée

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    bonsoir ;
    pourquoi un message d'erreur m'apparait -il toujours lors du tri de mon hash svp voilà le message d'erreur dans une capture écran
    Nom : msg.PNG
Affichages : 1190
Taille : 55,3 Ko
    et mon code en faite j'ai essayé de savoir qu'est l'élement le plus présent de la liste 1 dans la liste 2 , tous marche bien jusqu'à l'étape du tri , ce que me dérange c'est le message d'erreur qui m'apparait à chaque fois , je peux pas rendre le projet à mon prof avec ce message voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    my @liste1=qw/ aam kao fas has mna hsa/;
    #print "@liste1\n";
    my @liste2=qw/hsa aam kao fas has mna
    hsa aam kao hsa hsa hsa hsa hsakao fas has/;
     
    my @liste_compteur;
    foreach my $x(@liste1){
     my $compteur=0;
       foreach my $y(@liste2){
     
          if ($x=~m/$y/){$compteur++;}   
       }
     
    push(@liste_compteur,$compteur);
     
    }
    print "@liste_compteur\n";
    my %h;
    my $special;
    my ($i,$a);
    foreach my $i(@liste1){
    $h{$i}=$liste_compteur[$a++];
    }
    my @sorte ;
    @sorte = sort { $h{$a} <=> $h{$b} } keys %h;
    print "@sorte\n";     
     
     
     
    print "fin\n";	
    <>;
    merci d'avance de votre aide

  15. #15
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 3 612
    Points : 12 465
    Points
    12 465
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    pas le temps maintenant de faire un test pour vérifier, mais il se peut que le problème vienne du fait que tu utilises un variable lexicale $a quelques lignes avant le tri:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my ($i,$a);
    foreach my $i(@liste1){
    $h{$i}=$liste_compteur[$a++];
    }
    Les variables $a et $b sont spéciales, il est préférable de ne pas les employer en-dehors d'une opération de tri, surtout s'il y a aussi un tri dans le même programme, car cela peut introduire des bugs assez difficiles à élucider.

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    bonsoir
    il me reste une question lolo78 stp ; j'ai besoin d'installer GD pour faire un histogramme mais je sais pas comment , j'ai aucune idée en realité , pour l'info j'ai windows 7 , perl 5
    t'as une idée stp
    merci d'avance
    bonne soiére à tous

  17. #17
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : mai 2012
    Messages : 3 612
    Points : 12 465
    Points
    12 465
    Billets dans le blog
    1
    Par défaut
    Tout dépend de ta distribution de Perl: est-ce Strawberry ou ActiveState? Ou autre?

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    bonjour ;
    c'est ActiveState , il est installé j'ai vu ca sur la console, je voudrais faire un histogramme avec mais ca m'affiche rien t'aurais pas une exemple concret pour le tester ??
    mais données à moi sont :
    groupe taxonomique frequence d'apparition BLAST
    Actinobacteria =>1707
    proteobacteria =>2025
    Bacteroides =>207
    cyanobacteria =>136
    j'ai essayé avec des données du prof mais ca me crée des images vides
    GD::Graph ; je comprends pas comment voir si GD::graph est installé ou pas
    voilà le code du prof dans le cours que j'ai essayé mais toujours une image vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    use GD::Graph::bars;
    use strict;
    # arguments : deux pointeurs vers des tableaux anonymes de même taille
    my @data = (["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug",
    "Sep", "Oct", "Nov", "Dec"],
    [23, 5, 2, 20, 11, 33, 7, 31, 77, 18, 65, 52]);
    my $mygraph = GD::Graph::bars->new(500, 300);
    $mygraph->set(
    x_label => 'Month',
    y_label => 'Number of Hits',
    title => 'Number of Hits in Each Month in 2002',
    ) or warn $mygraph->error;
    my $myimage = $mygraph->plot(\@data) or die $mygraph->error;
    open(IMG, '>f1.png') or die $!;
    binmode IMG;
    print IMG $myimage->png;
    merci beucoup

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2016
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : novembre 2016
    Messages : 66
    Points : 40
    Points
    40
    Par défaut
    bjr

    ah j'ai obtenu enfin un graphique mais il est moche
    je trouve une option de couleurs mais ca marche pas
    comment on peur faire pour bien apparaitre les valeurs de x actinobacteria proteobacteria ....??
    mais l'important est de l'avoir déja quelque heures avant de rendre le compte rendu

    merci et bonne journée

  20. #20
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    septembre 2011
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2011
    Messages : 1 376
    Points : 2 023
    Points
    2 023
    Par défaut
    Bonjour,
    Il y a un exemple ICI pas de moi !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Decouper un tableau par rapport aux ecarts entre valeurs
    Par yoloosis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 02/03/2010, 17h32
  2. tri d'un tableau a 2 colonnes par rapport aux valeurs de la première
    Par DeathMixer dans le forum Bibliothèque standard
    Réponses: 6
    Dernier message: 29/04/2009, 10h54
  3. [MySQL] problème pour fonction de suppression par rapport aux valeurs associées
    Par karasnake dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/06/2008, 17h50
  4. Réponses: 5
    Dernier message: 10/12/2007, 15h24
  5. realiser un tri par rapport aux dates
    Par le_viet dans le forum Général VBA
    Réponses: 3
    Dernier message: 24/04/2007, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo