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

Modules Perl Discussion :

representer des donnes graphiquement a partir d'un fichier text


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Points : 67
    Points
    67
    Par défaut representer des donnes graphiquement a partir d'un fichier text
    salut
    voila j'ai un petit programme qui extrait des donnéés a partir d'un fichier csv (nom pays et pourcentage)
    les nom de pays je les stockes dans un fichier text1.txt
    pourcentage de chaque pays dans text2.txt

    je veux representer ces données sous forme de graphe



    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    use strict;
    use warnings;
    use Text::CSV;
     
    use GD::Graph::bars;
    use GD::Graph::Data;
     
    my $filename = "out.csv";
    my $input1 = 'f1.txt';
    my $input2 = 'f2.txt';
    open( OUT1, '>' . $input1 ) or die("can't open $input1. \n");
    open( OUT2, '>' . $input2 ) or die("can't open $input2. \n");
    sub main {
    	print "Entrez la valeur : ";
    	my $val;
    	chomp( $val = <STDIN> );
    	open( INPUT, $filename ) or die "Cannot open $filename";
    	my $line = <INPUT>;
    	print "les pays ou les accident sont  a cause de  la TraFic sont :";
    	while ( $line = <INPUT> ) {
    		chomp($line);
    		my (
    			$name,     $name2,    $purcent,  $purcent1,
    			$purcent2, $purcent3, $purcent4, $purcent5
    		) = split( ' ', $line );
     
    		if ( $name2 > $val ) {
    			print "$name\t$name2\t\n";
    			print OUT1 "$name\n";
    				print OUT2 "$name2\n";
    			print "\n";
    		}
    	}
    }
     
     
     
    sub graph{
     
    my $data = GD::Graph::Data->new([
        ["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
        [    1,    2,    5,    6,    3,  1.5,    1,     3,     4],
    ]) or die GD::Graph::Data->error;
     
     
    my $graph = GD::Graph::bars->new;
     
    $graph->set( 
        x_label         => 'X Label',
        y_label         => 'Y label',
        title           => 'A Simple Bar Chart',
     
        #y_max_value     => 7,
        #y_tick_number   => 8,
        #y_label_skip    => 3,
     
        #x_labels_vertical => 1,
     
        #bar_spacing     => 10,
        #shadow_depth    => 4,
        #shadowclr       => 'dred',
     
        #transparent     => 0,
    ) or die $graph->error;
     
    $graph->plot($data) or die $graph->error;
     
    my $file = 'bars.png';
    open(my $out, '>', $file) or die "Cannot open '$file' for write: $!";
    binmode $out;
    print $out $graph->gd->png;
    close $out
    }
    main();

    donc je veux remplacer la ligne 41 par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $data = GD::Graph::Data->new([
        [données de tetx1.txt],
        [   données de tetx2.txt]],
    ]) or die GD::Graph::Data->error;
    Merci

  2. #2
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    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 410
    Points : 2 054
    Points
    2 054
    Par défaut
    Bonjour,
    En attendant de meilleures solutions...

    En restant au plus près de ce que tu as fait, sauf :
    - Je n'ai pas vu l'utilité d'écrire les données intermédiaires dans des fichiers texte f1 & f2
    - Je me suis simplifié la vie en ne stockant pas de valeurs décimales dans le .xls

    le .csv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    1st;1
    2nd;2
    3rd;5
    4th;6
    5th;3
    6th;9
    7th;1
    8th;3
    9th;4

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    use strict;
    use warnings;
    use Text::CSV;
     
    use GD::Graph::bars;
    use GD::Graph::Data;
     
    my $filename = "out.csv";
     
    sub main {
    	print "Entrez la valeur : ";
    	my $val;
    	chomp( $val = <STDIN> );
    	open( INPUT, $filename ) or die "Cannot open $filename";
     
    	print "les pays ou les accident sont  a cause du TraFic sont :\n";
    	my (@Pays, @Purcent) = ();
    	while ( my $line = <INPUT> ) {
    		chomp($line);
    		my (
    			$pays, $purcent,
    		) = split( ';', $line );
     
    		if ( $purcent > $val ) {
    			print "$pays\t$purcent\t\n";
    			push (@Pays, $pays);
    			push (@Purcent, $purcent);
    		}
    	}
    	close INPUT;
     
    	#print "@Pays\n";
    	#print "@Purcent\n";
    	graph(\@Pays, \@Purcent);
    }
     
    #NB : On passe les tableaux par référence - Ils ne sont pas modifiés dans graph()
     
    sub graph{
    my $Pays = shift;
    my $Purcent = shift;
     
    my $data = GD::Graph::Data->new([
        [@$Pays],
    	[@$Purcent],
    ]) or die GD::Graph::Data->error;
     
    my $graph = GD::Graph::bars->new;
     
    $graph->set( 
        x_label         => 'X Label',
        y_label         => 'Y label',
        title           => 'A Simple Bar Chart',
     
        #y_max_value     => 7,
        #y_tick_number   => 8,
        #y_label_skip    => 3,
     
        #x_labels_vertical => 1,
     
        #bar_spacing     => 10,
        #shadow_depth    => 4,
        #shadowclr       => 'dred',
     
        #transparent     => 0,
    ) or die $graph->error;
     
    $graph->plot($data) or die $graph->error;
     
    my $file = 'bars.png';
    open(my $out, '>', $file) or die "Cannot open '$file' for write: $!";
    binmode $out;
    print $out $graph->gd->png;
    close $out
    }
    main();

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 74
    Points : 67
    Points
    67
    Par défaut
    Merci infiniment ,ça fonctionne ,donc on empile les données dans un tableau avec la fonction push *génial et simple* et apres on le passe par reference .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 07/12/2009, 17h00
  2. Réponses: 6
    Dernier message: 11/02/2008, 21h33
  3. Bibliothèque graphique a partir d'un fichier text ?
    Par Utopiaste dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 13/06/2007, 16h23
  4. Réponses: 1
    Dernier message: 29/01/2007, 19h22
  5. Réponses: 2
    Dernier message: 25/01/2007, 13h20

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