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

Bibliothèques et frameworks PHP Discussion :

[JpGraph] SetAntiAliasing ne fonctionne pas sur les graph lignes simples


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut [JpGraph] SetAntiAliasing ne fonctionne pas sur les graph lignes simples
    Bonjour à tous les JpGraphers !

    J'ai un souci avec les graph version lignes simples, la fonction SetAntiAliasing ne fonctionne pas

    Mes lignes sont toujours de mauvaise qualité

    Pour info ça marche avec les pie charts (camembert) en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $piegraph->SetAntiAliasing();
    Mais pas avec les line charts (lignes simples) en mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $graph->img->SetAntiAliasing();
    Ce qui est étrange c'est que même lorsque l'Antialias est activé sur mes graph en ligne, je peux toujours changer l'épaisseur de mes lignes alors que ça ne devrait pas être possible_

    Est-ce que quelqu'un aurait une idée sur comment solutionner mon problème car après de longues recherches sur le Web, je n'ai rien trouvé !

    Merci d'avance pour votre aide, toute suggestion sera la bienvenue. @ bientôt.

    Voici mon script

    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
    <?php
     
    require_once ('jpgraph/jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph/jpgraph_line.php');
    require_once ('jpgraph/jpgraph/jpgraph_utils.inc.php');
     
     
    $graph = new Graph(1200,600);
    $graph->SetScale("textlin");
    $graph->img->SetAntiAliasing();
     
    $graph->SetShadow();
     
    $theme_class=new UniversalTheme;
     
    $graph->SetTheme($theme_class);
    $graph->img->SetAntiAliasing();
    $graph->title->SetFont(FF_ARIAL,FS_BOLD,20);
    $graph->title->SetAlign("center","top");
    $graph->title->SetColor('black');
    $graph->title->Set(" Test ");
    $graph->title->SetBox(true);
     
    $graph->SetBox(false);
     
    $graph->ygrid->Show();
    $graph->ygrid->SetLineStyle("solid");
    $graph->yaxis->HideZeroLabel();
    $graph->yaxis->HideLine(false);
    $graph->yaxis->HideTicks(false,false);
    $graph->yaxis->SetFont(FF_FONT1,FS_BOLD);
     
    $graph->xgrid->Show();
    $graph->xgrid->SetLineStyle("solid");
    $graph->xaxis->SetTickLabels($moisfr);
    $graph->xaxis->SetLabelMargin(10);
    $graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
    $graph->xgrid->SetColor('#E3E3E3');
     
    // Create the first line
    $p1 = new LinePlot($tableau1);
    $graph->Add($p1);
    $p1->SetColor("#FF8000");
    $p1->SetWeight(4);
    $p1->SetLegend('Delay');
    $p1->value->SetFormat('%d');
    $p1->value->SetFont(FF_FONT1,FS_BOLD);
    $p1->value->Show();
    // Type de point
    $p1->mark->SetType(MARK_FILLEDCIRCLE);
    // Couleur de remplissage
    $p1->mark->SetFillColor("orange");
    // Taille
    $p1->mark->SetWidth(3);
    $graph->legend->SetShadow('gray',5);
    $graph->legend->SetFont(FF_FONT2,FS_BOLD,70);
    $graph->legend->SetColor('black','orange');
    $graph->legend->SetFrameWeight(1);
    $graph->legend->SetLineWeight(6);
    $graph->legend->SetMarkAbsSize(0);
    $graph->legend->SetMarkAbsVSize(8);
    $graph->legend->SetMarkAbsHSize(40);
    // Output line
    $graph->Stroke();
    ?>
    Merci d'avance pour votre aide très précieuse.

  2. #2
    bm
    bm est déconnecté
    Membre extrêmement actif

    Homme Profil pro
    Freelance
    Inscrit en
    Octobre 2002
    Messages
    874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2002
    Messages : 874
    Billets dans le blog
    6
    Par défaut
    http://www.photoshop-school.org/leco.../Anti-Aliasing

    Il me semble que c'est possible que pour les surfaces et pas les lignes droites .

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Merci bm pour ta réponse. Tu as sûrement raison malheureusement...

    Quelqu'un connait-il un contournement de cette limitation qui me permettrait d'avoir des lignes droites et non crénelés dans mes graphiques.

    Merci.

  4. #4
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Bonjour.
    La doc est claire :
    Lines will ignore any width and only have a single line-width of approximately=1. It is not possible to set the line width when anti-alias is used. (This would require a full implementation of anti-aliased polygons which is not implemented.)
    L'antialiasing fonctionne donc avec les lignes droites mais avec la limitation suivante : l'épaisseur des lignes est réduite à 1 pixel.

    En revanche, l'antialiasing fonctionne bien pour les lignes à 1 pixel d'épaisseur comme tu peux le voir en prenant pour exemple une partie de ton code source
    Nom : test_jpgraph_34.png
Affichages : 236
Taille : 9,6 Ko

    Nom : test_jpgraph_35.png
Affichages : 244
Taille : 6,4 Ko

    Yves

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Bonjour Yves et merci pour ta réponse qui m'arrange car ça veut dire que c'est faisable. ;-)

    Le problème c'est plutôt la mise en oeuvre.....

    Lorsque je passe tous mes "SetWeight()" à 1, l'autoaliasing ne fonctionne toujours pas. Or toi tu arrives à le faire fonctionner au vu de l'image avec l'antialiasing. Qu'as-tu modifié sur mon code ?

    Pour tester vraiment au plus simple voici mon code "ultra-light" et l'antialiasing ne fonctionne toujours pas, bizarre non ?
    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
    <?php
    require_once ('jpgraph/jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph/jpgraph_line.php');
    require_once ('jpgraph/jpgraph/jpgraph_utils.inc.php');
     
    // Setup the graph
    $graph = new Graph(1200,600);
    $graph->img->SetAntiAliasing();
    // Manually set Y-scale
    $graph->SetScale('textlin',5,10); 
     
    // Create the first line
    $p1 = new LinePlot($tableau1);
    $graph->Add($p1);
    $graph->Stroke();
    ?>
    Résultat.....
    Nom : jpgraph-test.png
Affichages : 250
Taille : 7,6 Ko

    Une idée ?
    Merci d'avance pour ton aide Yves.

  6. #6
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Peux tu fournir les valeurs utilisées pour $tableau1 ?
    Ça m'évitera de chercher ...

  7. #7
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Le code suivant
    Code php : 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
    <?php
    require_once ('jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph_line.php');
    // require_once ('jpgraph/jpgraph_utils.inc.php');
    $tableau1=array(9.7,9.6,9.3,9.6,9.7,9.7); 
     
    // Setup the graph
    $graph = new Graph(1200,600);
    $graph->img->SetAntiAliasing();
    // Manually set Y-scale
    $graph->SetScale('textlin',5,10);
     
    // Create the first line
    $p1 = new LinePlot($tableau1);
    $graph->Add($p1);
    $graph->Stroke();
    ?>


    donne le graphe suivant
    Nom : test_jpgraph_36.png
Affichages : 236
Taille : 9,3 Ko

    où l'antialiasing fonctionne ...
    la seule différence c'est la mise en commentaire de la librairie utils mais avec ou sans, ça donne le même graphique.
    J'avoue ne pas comprendre d'où vient le problème

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Désolé je viens seulement de voir ta réponse et merci du temps que tu consacres à mon pb de m***** ;-)
    Moi aussi je ne comprends pas comment ça peut marcher chez toi et pas chez moi car avec le code suivant, toujours pareil, pas d'antialiasing comme tu peux le constater sur l'image fourni tout en bas:
    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
    <?php
    $tableau1=array(6,7,2,8,3,4);
    require_once ('jpgraph/jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph/jpgraph_line.php');
    require_once ('jpgraph/jpgraph/jpgraph_utils.inc.php');
     
    $graph = new Graph(1200,600);
    $graph->img->SetAntiAliasing();
    // Manually set Y-scale
    $graph->SetScale('textlin',0,10);
     
    // Create the first line
    $p1 = new LinePlot($tableau1);
    $graph->Add($p1);
    $graph->Stroke();
    ?>
    Nom : jpgraph-test.png
Affichages : 243
Taille : 8,0 Ko

    Là je comprends plus et pourtant mon serveur gère bien l'antialiasing puisque je peux le faire sur des camemberts.
    Bon bah je crois que je vais garder mes droites version crénelés.... c'est pas très design.
    Merci quand même ! Toujours ouvert à d'autres idées. JP

  9. #9
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    On ne sait jamais :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $graph->image->SetQuality(100);

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2014
    Messages : 5
    Par défaut
    Merci Yves et quelle réactivité !

    Mais malheureusement même avec la qualité à 100%, toujours pas d'antialiasing......

Discussions similaires

  1. test.exe qui ne fonctionnent pas sur les autres machines
    Par sboumediene dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/06/2011, 08h06
  2. Réponses: 1
    Dernier message: 22/03/2010, 09h56
  3. [CSS] [FAQ] Pourquoi text-align ne fonctionne pas sur les éléments de type SPAN
    Par Lost In Translation dans le forum Contribuez
    Réponses: 1
    Dernier message: 11/12/2008, 10h30
  4. Réponses: 5
    Dernier message: 24/09/2008, 00h59
  5. Réponses: 4
    Dernier message: 03/04/2006, 08h50

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