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 :

[GD::Graph::lines] affichage des coordonnées


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut [GD::Graph::lines] affichage des coordonnées
    Avec le module GD::Graph::lines y a-t-il moyen de faire apparaitre les coordonnées de chaque point sur le graphique?

    Merci,

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Si tu souhaites afficher des lignes et des points, il faut utiliser GD::Graph::mixed.
    Tu pourras ainsi afficher tes points et les lignes en même temps.

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Voici un exemple de 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
    32
    33
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    use GD::Graph::mixed;
     
    my @data = ( 
        [ qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) ],
        [ reverse(4, 3, 5, 6, 3,  1.5, -1, -3, -4, -6, -7, -8)],
        [        (4, 3, 5, 6, 3,  1.5, -1, -3, -4, -6, -7, -8)],
        [        (2, 2, 2, 5, 5,  4.5,1.5,  2,  3,  5,  4,  3)],
    );
     
     
    my $my_graph = new GD::Graph::mixed( 500, 500 );
     
    $my_graph->set( 
    	x_label           => 'positions',
    	y_label           => 'valeurs',
    	title             => "Rap. : Evolution du signal des pics uniques au cours du pyroséquençage",
    	y_max_value       => 16,
    	y_tick_number     => 8,
    	y_label_skip      => 2, 
    	types             => [ qw( points lines points ) ],
    );
     
    $my_graph->set_legend( qw( one two three four ) );
    $my_graph->plot(\@data);
     
            open(OUT, ">point.png") or die $!;
            binmode OUT;
            print OUT $my_graph->gd->png;
            close OUT;

  4. #4
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Ok, merci.

    J'ai simplement modifié GD::Graph::lines en GD::Graph::mixed et j'obtiens le même graphique sauf que pour GD::Graph::lines les valeurs des axes étaient ajustées automatiquement (on ne commençait pas l'échelle à 0 si la plus petite valeur était 10). Comment faire avec GD::Graph::mixed pour obtenir le même effet?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    my $graph = GD::Graph::mixed->new(650, 300);
    $graph->set( types => [qw(linespoints)] );
     
    $graph->set( 
    	x_label           => 'positions',
    	y_label           => 'valeurs',
    	title             => "Rap. $report $run : Evolution du signal des pics uniques au cours du pyroséquençage",
    	y_max_value       => 16,
    	y_tick_number     => 8,
    	y_label_skip      => 2 
    ) or die $graph->error;
    J'ai bien une ligne et les points mais quelles seraient les différences avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $graph->set( types => [qw(lines points)] );

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Il faut que tu mes donnes un code à tester avec des vrais valeurs.

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Citation Envoyé par djibril Voir le message
    Il faut que tu mes donnes un code à tester avec des vrais valeurs.
    Merci beaucoup, voici le début du 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
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    #!/usr/local/bin/perl
     
     
    #------------- GD_mixed.pl
     
    use strict;
    use warnings;
     
     
    use GD::Graph::mixed;
    use Statistics::LineFit;
     
     
    =h
    Rapport 1	A1	Nuc
    0	12.33	T
    1	13.53	C
    2	13.49	T
    4	14.22	A
    6	12.89	T
    7	13.04	C
    8	11.81	T
    10	11.23	G
    12	13.44	C
    16	13.29	C
    21	13.2	G
    23	11.85	C
    24	11.45	T
    25	11.14	G
    =cut
     
     
    my $report = 1;
    my $run = 'A1';
     
     
    # recherche de l'équation de la droite
    my $lineFit = Statistics::LineFit->new();
    my @unic_val_position_x = (0, 1, 2, 4, 6, 7, 8, 10, 12, 16, 21, 23, 24, 25);
    my @unic_val_y = (12.33, 13.53, 13.49, 14.22, 12.89, 13.04, 11.81, 11.23, 13.44, 13.29, 13.20, 11.85, 11.45, 11.14);
     
    $lineFit->setData (\@unic_val_position_x, \@unic_val_y) or die "Invalid data";
    my ($intercept, $slope) = $lineFit->coefficients();
    my $rSquared = sprintf ( "%.3f",$lineFit->rSquared());
     
     
     
    # valeurs des points mis sur le graphique
    my @y_values_graph = (12.33, 13.53, 13.49, undef, 14.22, undef, 12.89, 13.04, 11.81, undef, 11.23, undef, 13.44, undef, undef, undef, 13.29, undef, undef, undef, undef, 13.20, undef, 11.85, 11.45, 11.14);
    # lettre à associer à chaque point défini
    my @tag = ('T', 'C', 'T', undef, 'A',undef, 'T', 'C', 'T', undef, 'G', undef, 'C', undef, undef, undef, 'C', undef, undef, undef, undef, 'G', undef, 'C', 'T', 'G');
     
    my @data = ( 
        [0..25],
        \@y_values_graph,
    );
     
     
     
    # x dont le y n'est pas défini : 3, 5, 9, 11, 13, 14, 15, 17, 18, 19, 20, 22  
     
     
     
     
    my $graph = GD::Graph::mixed->new(650, 300);
    $graph->set( types => [qw(linespoints)] );
     
    $graph->set( 
    	x_label           => 'positions',
    	y_label           => 'valeurs',
    	title             => "Rap. $report $run : Evolution du signal des pics uniques au cours du pyroséquençage",
    	y_max_value       => 16,
    	y_tick_number     => 8,
    	y_label_skip      => 2 
    ) or die $graph->error;
     
    $graph -> set(dclrs => ["lred"]);
    my $gd = $graph->plot(\@data) or die $graph->error;
     
    if ($intercept >= 0){
    	print "Y = $slope X +$intercept\nR2 = $rSquared\n";
    }
    else {
    	print "Y = $slope X $intercept\nR2 = $rSquared\n";
    }
     
    # dessin de la droite de régression sur le graphique
     
    my $x1 = 0;
    my $y1 = $intercept;
    my $x2 = 25;
    my $y2 = $slope * 25 + $intercept;
     
     
     
    open(IMG, ">P:/Theorie/Cathy/Myco_pyro/graphiques/Rap${report}_$run.jpg") or die $!;
    binmode IMG;
    print IMG $gd->png;
    Je vais essayer d'ajouter la seconde droite [$x1, $x2], [$y1, $y2] ainsi que les coordonnées en face de chaque point de @data sur le graphique.

  7. #7
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    J'ai une question au sujet de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my @data = ( 
        [ qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) ],
        [ qw/ 2 5 2 9/], # ligne 1
        [        (2, 2, 2, 5, 5,  4.5,1.5,  2,  3,  5,  4,  3)],  # ligne 2
    );
    pour la première ligne on donne l'array contenant les valeurs des X ainsi qu'un array avec celles des Y mais pourquoi la seconde ligne n'a-t-elle qu'une seule liste?

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

Discussions similaires

  1. Affichage des coordonnées de souris
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 12/10/2010, 18h14
  2. Réponses: 3
    Dernier message: 31/07/2008, 17h54
  3. Affichage des coordonnées d'un bouton
    Par Premium dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 14/12/2006, 21h27

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