Avec le module GD::Graph::lines y a-t-il moyen de faire apparaitre les coordonnées de chaque point sur le graphique?
Merci,
Avec le module GD::Graph::lines y a-t-il moyen de faire apparaitre les coordonnées de chaque point sur le graphique?
Merci,
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.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
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;
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
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?
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
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;
Code : Sélectionner tout - Visualiser dans une fenêtre à part $graph->set( types => [qw(lines points)] );
Il faut que tu mes donnes un code à tester avec des vrais valeurs.
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
Merci beaucoup, voici le début du code :
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.
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;
J'ai une question au sujet de :
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?
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 );
Partager