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

Delphi Discussion :

[TChart] Changer l'axe d'un chart.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut [TChart] Changer l'axe d'un chart.
    Bonjour à tous,

    Dans le cadre de mon projet, j'en suis arrivée à devoir modifier l'axe d'un graphe (TChart), c.a.d changer les valeurs des graduations, ajouter des barres de repérages en couleur...) Sans pour autant modifier mon graphique ou ma série.

    Par exemple, si j'ai une série avec des valeurs de X comprises entre 0 et 5000, et sans changer aucunes valeurs, j'aimerais pouvoir remplacer ma plage de graduation de X entre 2500 et 5000 par [10000 à 12500]. Donc en gros j'aimerais pouvoir modifier les valeurs text de mes graduations.
    Dans la même idée, je dois pouvoir insérer dans ma graduation une barre colorée "repère" avec une valeur texte de mon choix à son extrémité.

    Seulement je n'ai pas la moindre piste ou idée pour réaliser un truc dans ce style, donc toutes les suggestions seront les biens venus.

    Merci de votre aide,

    A+.

  2. #2
    Membre chevronné
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Par défaut
    Regarde là : http://www.steema.com/support/faq/NewVCL/FAQ_VCL_AXES.htm

    Il doit y avoir ce que tu cherches... en utilisant l'événement OnGetAxisLabel du TChart...

  3. #3
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Merci pour ton aide, il semblerait que ce soit effectivement l'évènement OnGetAxis que je dois utiliser. Seulement il n'existe pas beaucoup d'aide sur le chart et avec ce code je n'arrive à changer que TOUTES les graduations de mon axe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries;
      ValueIndex: Integer; var LabelText: string);
    Begin
    If Sender=Chart1.LeftAxis then // If labels from Left axis
        LabelText:='10 20'; // Rewrite label
    End;
    Ici toutes les graduations de mon axes valent 10 20...Comment faire pour n'agir que sur un élément, ou même mieux, pour entrer ma chaîne?

    Merci pour votre aide,

    A+.

  4. #4
    Membre chevronné
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Par défaut
    Citation Envoyé par PadawanDuDelphi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries;
      ValueIndex: Integer; var LabelText: string);
    Begin
    If Sender=Chart1.LeftAxis then // If labels from Left axis
        LabelText:='10 20'; // Rewrite label
    End;
    Ici toutes les graduations de mon axes valent 10 20...Comment faire pour n'agir que sur un élément, ou même mieux, pour entrer ma chaîne?
    et si tu testes en plus ta ValueIndex ? pour ne justement modifier que ce que tu souhaites.. ou utliser sa valeur via une suite géométrique qui te donnerait les valeurs visuelles que tu souhaites sans modifier justement les vraies ?

  5. #5
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Oui, après plusieurs recherches j'ai vu qu'on pouvait jouer sur ValueIndex pour repérer un point de la série, mais étrangement ValueIndex à toujours la valeur -1 chez moi...

    Ou utliser sa valeur via une suite géométrique qui te donnerait les valeurs visuelles que tu souhaites sans modifier justement les vraies ?
    Je ne suis pas sûr d'avoir compris cette phrase...Ce que tu me proposes c'est de créer une autre série (géométrique) qui contiendrait ma graduation selon X et des valeuyrs quelquonque selon Y?

    A+.

  6. #6
    Membre chevronné
    Avatar de Whiler
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 298
    Par défaut
    J'imagine qu'il doit falloir utiliser la propriété ValuesLists d'une série pour éventuellement balayer les valeurs... mais tout comme toi, j'ai toujours -1...

    donc voila comment j'ai fait pour afficher les valeurs de mon choix :

    Dans mon exemple, j'ai une série avec des températures en degrés celcius..
    mais mon axe affiche les valeurs en °F.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm2.Chart1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries;
      ValueIndex: Integer; var LabelText: string);
    begin
      if Sender = Chart1.LeftAxis then
      begin
        LabelText := FormatFloat('0.00', ((StrToIntDef(LabelText, 44) * 9) /5 + 32));
      end;
    end;
    et pour la phrase que t'as pas comprise, dans mon exemple, c'est simplement ma méthode de conversion des celcius en fahrenheit... la transformation de la valeur.. j'voulais rien dire de plus

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

Discussions similaires

  1. zoom sur l'axe y de chart
    Par yan44 dans le forum BIRT
    Réponses: 19
    Dernier message: 19/10/2010, 15h36
  2. Changer l'axe de vue
    Par Décembre dans le forum Traitement d'images
    Réponses: 8
    Dernier message: 06/08/2010, 06h56
  3. Changer les axes d'un graphiques polaire
    Par planles1905 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 09/06/2010, 15h19
  4. Réponses: 0
    Dernier message: 17/12/2008, 13h18
  5. [stem] Changer l'axe de référence
    Par Luigicube dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 22/05/2008, 17h38

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