J'utilise GD::Graph pour generer de jolie graphique.
Cela marche bien mais j'ai des axes en trait plein.
Est il possible d'avoir des axex en trait pointillé comme dans les graphique genere par RRD.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
jl_morel
Dans l'article <dobuqs$aln$, a dit...
J'utilise GD::Graph pour generer de jolie graphique. Cela marche bien mais j'ai des axes en trait plein. Est il possible d'avoir des axex en trait pointillé comme dans les graphique genere par RRD.
Il n'y a pas d'option pour tracer les axes en pointillé.
La méthode qui trace les axes est draw_axes dans le module GD::Graph::axestype.pm Une solution est de récrire cette méthode. Comme il n'est pas recommandé de le faire dans le module lui-même (ça peut poser des problèmes avec d'autres programmes), on peut la récrire en tout début de script.
Dans le script démo qui suit j'utilise la méthode setStyle de GD pour fixer le style des pointillés. Puis je remplace tous les $self->{fgci} par des gdStyled. On ne peut pas faire un $self->{fgci} = gdStyled, car l'attribut $self->{fgci} sert aussi pour les graduations et les graduations en pointillé, c'est moche.
Une méthode plus rigoureuse serait d'écrire une classe GD::MyGraph dérivée de GD::Graph et de surcharger les méthodes qu'on veut modifier. Mais c'est un des avantages de Perl de permettre des raccourcis qui décoiffent :-)
#!/usr/bin/perl -w use strict; use GD; use GD::Graph::lines;
# On redéfinit la routine draw_axes de GD::Graph::axestype.pm # on aura le warning : # Subroutine GD::Graph::axestype::draw_axes redefined at... # c'est normal !
sub GD::Graph::axestype::draw_axes { my $self = shift;
# def rouge en rgb my $red = $self->{graph}->colorAllocate(255,0,0); # Style du pointillé : 3 pixels rouges + 3 pixels transparents $self->{graph}->setStyle($red, $red, $red, gdTransparent, gdTransparent, gdTransparent );
$graph->set( box_axis => 0, x_label => 'X Label', y_label => 'Y label', title => 'Some simple graph', y_max_value => 8, y_tick_number => 8, y_label_skip => 2, ) or die $graph->error;
my $gd = $graph->plot(@data) or die $graph->error;
open(IMG, '>gdgraph.gif') or die $!; binmode IMG; print IMG $gd->gif; close IMG;
__END__
-- J-L.M. http://www.bribes.org/perl
Dans l'article <dobuqs$aln$2@ellebore.extra.cea.fr>, frasset@cobalt.ccc.cea.fr
a dit...
J'utilise GD::Graph pour generer de jolie graphique.
Cela marche bien mais j'ai des axes en trait plein.
Est il possible d'avoir des axex en trait pointillé comme dans les graphique
genere par RRD.
Il n'y a pas d'option pour tracer les axes en pointillé.
La méthode qui trace les axes est draw_axes dans le module
GD::Graph::axestype.pm
Une solution est de récrire cette méthode. Comme il n'est pas recommandé de
le faire dans le module lui-même (ça peut poser des problèmes avec d'autres
programmes), on peut la récrire en tout début de script.
Dans le script démo qui suit j'utilise la méthode setStyle de GD pour fixer
le style des pointillés. Puis je remplace tous les $self->{fgci} par des
gdStyled. On ne peut pas faire un $self->{fgci} = gdStyled, car l'attribut
$self->{fgci} sert aussi pour les graduations et les graduations en
pointillé, c'est moche.
Une méthode plus rigoureuse serait d'écrire une classe GD::MyGraph dérivée
de GD::Graph et de surcharger les méthodes qu'on veut modifier. Mais c'est
un des avantages de Perl de permettre des raccourcis qui décoiffent :-)
#!/usr/bin/perl -w
use strict;
use GD;
use GD::Graph::lines;
# On redéfinit la routine draw_axes de GD::Graph::axestype.pm
# on aura le warning :
# Subroutine GD::Graph::axestype::draw_axes redefined at...
# c'est normal !
sub GD::Graph::axestype::draw_axes {
my $self = shift;
# def rouge en rgb
my $red = $self->{graph}->colorAllocate(255,0,0);
# Style du pointillé : 3 pixels rouges + 3 pixels transparents
$self->{graph}->setStyle($red, $red, $red,
gdTransparent, gdTransparent, gdTransparent
);
J'utilise GD::Graph pour generer de jolie graphique. Cela marche bien mais j'ai des axes en trait plein. Est il possible d'avoir des axex en trait pointillé comme dans les graphique genere par RRD.
Il n'y a pas d'option pour tracer les axes en pointillé.
La méthode qui trace les axes est draw_axes dans le module GD::Graph::axestype.pm Une solution est de récrire cette méthode. Comme il n'est pas recommandé de le faire dans le module lui-même (ça peut poser des problèmes avec d'autres programmes), on peut la récrire en tout début de script.
Dans le script démo qui suit j'utilise la méthode setStyle de GD pour fixer le style des pointillés. Puis je remplace tous les $self->{fgci} par des gdStyled. On ne peut pas faire un $self->{fgci} = gdStyled, car l'attribut $self->{fgci} sert aussi pour les graduations et les graduations en pointillé, c'est moche.
Une méthode plus rigoureuse serait d'écrire une classe GD::MyGraph dérivée de GD::Graph et de surcharger les méthodes qu'on veut modifier. Mais c'est un des avantages de Perl de permettre des raccourcis qui décoiffent :-)
#!/usr/bin/perl -w use strict; use GD; use GD::Graph::lines;
# On redéfinit la routine draw_axes de GD::Graph::axestype.pm # on aura le warning : # Subroutine GD::Graph::axestype::draw_axes redefined at... # c'est normal !
sub GD::Graph::axestype::draw_axes { my $self = shift;
# def rouge en rgb my $red = $self->{graph}->colorAllocate(255,0,0); # Style du pointillé : 3 pixels rouges + 3 pixels transparents $self->{graph}->setStyle($red, $red, $red, gdTransparent, gdTransparent, gdTransparent );
$graph->set( box_axis => 0, x_label => 'X Label', y_label => 'Y label', title => 'Some simple graph', y_max_value => 8, y_tick_number => 8, y_label_skip => 2, ) or die $graph->error;
my $gd = $graph->plot(@data) or die $graph->error;
open(IMG, '>gdgraph.gif') or die $!; binmode IMG; print IMG $gd->gif; close IMG;
__END__
-- J-L.M. http://www.bribes.org/perl
Henri FRASSETTI
Merci beaucoup
Je vais essayer
"Jean-Louis MOREL" a écrit dans le message de news: 43aa7dd1$0$21735$
Dans l'article <dobuqs$aln$, a dit...
J'utilise GD::Graph pour generer de jolie graphique. Cela marche bien mais j'ai des axes en trait plein. Est il possible d'avoir des axex en trait pointillé comme dans les graphique genere par RRD.
Il n'y a pas d'option pour tracer les axes en pointillé.
La méthode qui trace les axes est draw_axes dans le module GD::Graph::axestype.pm Une solution est de récrire cette méthode. Comme il n'est pas recommandé de le faire dans le module lui-même (ça peut poser des problèmes avec d'autres programmes), on peut la récrire en tout début de script.
Dans le script démo qui suit j'utilise la méthode setStyle de GD pour fixer le style des pointillés. Puis je remplace tous les $self->{fgci} par des gdStyled. On ne peut pas faire un $self->{fgci} = gdStyled, car l'attribut $self->{fgci} sert aussi pour les graduations et les graduations en pointillé, c'est moche.
Une méthode plus rigoureuse serait d'écrire une classe GD::MyGraph dérivée de GD::Graph et de surcharger les méthodes qu'on veut modifier. Mais c'est un des avantages de Perl de permettre des raccourcis qui décoiffent :-)
#!/usr/bin/perl -w use strict; use GD; use GD::Graph::lines;
# On redéfinit la routine draw_axes de GD::Graph::axestype.pm # on aura le warning : # Subroutine GD::Graph::axestype::draw_axes redefined at... # c'est normal !
sub GD::Graph::axestype::draw_axes { my $self = shift;
# def rouge en rgb my $red = $self->{graph}->colorAllocate(255,0,0); # Style du pointillé : 3 pixels rouges + 3 pixels transparents $self->{graph}->setStyle($red, $red, $red, gdTransparent, gdTransparent, gdTransparent );
$graph->set( box_axis => 0, x_label => 'X Label', y_label => 'Y label', title => 'Some simple graph', y_max_value => 8, y_tick_number => 8, y_label_skip => 2, ) or die $graph->error;
my $gd = $graph->plot(@data) or die $graph->error;
open(IMG, '>gdgraph.gif') or die $!; binmode IMG; print IMG $gd->gif; close IMG;
__END__
-- J-L.M. http://www.bribes.org/perl
Merci beaucoup
Je vais essayer
"Jean-Louis MOREL" <jl_morel@bribes.org> a écrit dans le message de news: 43aa7dd1$0$21735$626a14ce@news.free.fr...
Dans l'article <dobuqs$aln$2@ellebore.extra.cea.fr>, frasset@cobalt.ccc.cea.fr
a dit...
J'utilise GD::Graph pour generer de jolie graphique.
Cela marche bien mais j'ai des axes en trait plein.
Est il possible d'avoir des axex en trait pointillé comme dans les graphique
genere par RRD.
Il n'y a pas d'option pour tracer les axes en pointillé.
La méthode qui trace les axes est draw_axes dans le module
GD::Graph::axestype.pm
Une solution est de récrire cette méthode. Comme il n'est pas recommandé de
le faire dans le module lui-même (ça peut poser des problèmes avec d'autres
programmes), on peut la récrire en tout début de script.
Dans le script démo qui suit j'utilise la méthode setStyle de GD pour fixer
le style des pointillés. Puis je remplace tous les $self->{fgci} par des
gdStyled. On ne peut pas faire un $self->{fgci} = gdStyled, car l'attribut
$self->{fgci} sert aussi pour les graduations et les graduations en
pointillé, c'est moche.
Une méthode plus rigoureuse serait d'écrire une classe GD::MyGraph dérivée
de GD::Graph et de surcharger les méthodes qu'on veut modifier. Mais c'est
un des avantages de Perl de permettre des raccourcis qui décoiffent :-)
#!/usr/bin/perl -w
use strict;
use GD;
use GD::Graph::lines;
# On redéfinit la routine draw_axes de GD::Graph::axestype.pm
# on aura le warning :
# Subroutine GD::Graph::axestype::draw_axes redefined at...
# c'est normal !
sub GD::Graph::axestype::draw_axes {
my $self = shift;
# def rouge en rgb
my $red = $self->{graph}->colorAllocate(255,0,0);
# Style du pointillé : 3 pixels rouges + 3 pixels transparents
$self->{graph}->setStyle($red, $red, $red,
gdTransparent, gdTransparent, gdTransparent
);
"Jean-Louis MOREL" a écrit dans le message de news: 43aa7dd1$0$21735$
Dans l'article <dobuqs$aln$, a dit...
J'utilise GD::Graph pour generer de jolie graphique. Cela marche bien mais j'ai des axes en trait plein. Est il possible d'avoir des axex en trait pointillé comme dans les graphique genere par RRD.
Il n'y a pas d'option pour tracer les axes en pointillé.
La méthode qui trace les axes est draw_axes dans le module GD::Graph::axestype.pm Une solution est de récrire cette méthode. Comme il n'est pas recommandé de le faire dans le module lui-même (ça peut poser des problèmes avec d'autres programmes), on peut la récrire en tout début de script.
Dans le script démo qui suit j'utilise la méthode setStyle de GD pour fixer le style des pointillés. Puis je remplace tous les $self->{fgci} par des gdStyled. On ne peut pas faire un $self->{fgci} = gdStyled, car l'attribut $self->{fgci} sert aussi pour les graduations et les graduations en pointillé, c'est moche.
Une méthode plus rigoureuse serait d'écrire une classe GD::MyGraph dérivée de GD::Graph et de surcharger les méthodes qu'on veut modifier. Mais c'est un des avantages de Perl de permettre des raccourcis qui décoiffent :-)
#!/usr/bin/perl -w use strict; use GD; use GD::Graph::lines;
# On redéfinit la routine draw_axes de GD::Graph::axestype.pm # on aura le warning : # Subroutine GD::Graph::axestype::draw_axes redefined at... # c'est normal !
sub GD::Graph::axestype::draw_axes { my $self = shift;
# def rouge en rgb my $red = $self->{graph}->colorAllocate(255,0,0); # Style du pointillé : 3 pixels rouges + 3 pixels transparents $self->{graph}->setStyle($red, $red, $red, gdTransparent, gdTransparent, gdTransparent );