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 :

Plusieurs série de graphe supersposée ou non avec des axes d'abscisses alignés verticalement


Sujet :

Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Plusieurs série de graphe supersposée ou non avec des axes d'abscisses alignés verticalement
    Bonjour,
    voila mon problème dans lequel je m'englue sans fin.
    J'utilise l'OCX de TeeChart pour tenter de chercher un certain graphique à partir de donnée boursière.

    En simplifiant,je dois obtenir un graphique en plusieurs partie superosée verticalement:
    1. en chandelier (donnée de cours de bourses), superposé sur une courbe (moyenne mobile),
    avec un axe vertical à gauche

    2. En dessus, je dois avoir un graphique en histogramme, mais les données des axes des abscisses doivent être alignées verticalement.
    (ce sont les volumes de transaction).
    Axe vertical à droite.

    3. Encore en dessous, un graphique courbe simple (stochastique simplifiée), avec un axe vertical à gauche,
    et toujours un axe des abscisses avec les données alignées sur les autres axes.

    4. Ainsi de suite

    Là, j'arrive à réaliser les points 1 et 2, mais dés que je tente d'introduire la partie 3,
    les chandeliers disparaissent "écrasé" par le graphe de la stochastique.

    En clair je ne sais pas comment dire:
    . tel et telle série seront sur le même graphe/axe vertical
    . où placer (en premier, en second, etc, tel ou telle série de donnée avec son propre axe vertical.
    . les axes des abscises des séries n, x et z doivent être alignés horizontalement.

    Voila, si une bonne âme trouvait 5 minutes pour réellement me débloquer....

    Ci-joint le code que j'utilise:
    llTabind est un entier
    llMMInd est entier
    llDateOCX est entier
    lsDateDonnée est chaîne

    llChandelleNum est entier
    llHistoNum est entier
    llMM20Num est entier
    llStochastique09KNum est un entier
    lsMMAjoutTab est chaîne
    llStochastiqueInd est un entier

    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
    	llChandelleNum = 0
    	llMM20Num = 1
    	llHistoNum = 2
    	llStochastique09KNum = 3
     
    	{"Chart1"}>>RemoveAllSeries()							// Nettoyage de tout ce qui aurait pu trainer en mémoire
     
    	Chart1>>Aspect>>View3D = Faux						// On ne veut pas le graphe en 3 D
     
    	Chart1>>AddSeries(11)		// Ajoutons une série pour un graphe en chandelier (scCandle = 11)
    	Chart1>>AddSeries(0)		// tentative d'ajout d'une srie "scLine" pour la MM 20
    	Chart1>>AddSeries(1)		// Ajoutons une nouvelle série en histogramme pour les volumes (scBar = 1)
    	Chart1>>AddSeries(0)		// tentative d'ajout d'une srie "scLine" pour la Stochastique
     
    	Chart1>>Series(llHistoNum)>>Marks>>Visible = Faux				// N'affiche pas les étiquettes de valeurs pour chaque valeurs
     
    	Chart1>>Series(llChandelleNum)>>VerticalAxis = 0	// Paramètre l'axes des ordonnées de la série de chandelier - aLeftAxis = 0
    	Chart1>>Axis>>Left>>PositionPercent = 0				// Positionnenement horizontal en pourcentage par rapport au cadrage de l'axe
    	Chart1>>Axis>>Left>>StartPosition = 0
    	Chart1>>Axis>>Left>>EndPosition = 33
     
    	Chart1>>Series(llHistoNum)>>VerticalAxis = 1		// Paramètre l'axes des ordonnées de la série d'histogramme - aRightAxis = 1
    	Chart1>>Axis>>Right>>PositionPercent = 0			// Positionnenement horizontal en pourcentage par rapport au cadrage de l'axe
    	Chart1>>Axis>>Right>>StartPosition = 66
    	Chart1>>Axis>>Right>>EndPosition = 100
     
    	Chart1>>Series(llStochastique09KNum)>>VerticalAxis =llStochastique09KNum	
     
    	POUR llTabind = 1 A 30	// ---------------------------------------- Ajouter les données au graphique ------------------------------------------
    		lsDateDonnée = gtDonnée[llTabind]:sDate
    		llDateOCX = DateVersEntier(lsDateDonnée) - (DateVersEntier("19000101") - DateVersEntier("18000101"))
     
    		Chart1>>Series(llChandelleNum)>>asCandle>>AddCandle(llDateOCX, gtDonnée[llTabind]:rPremier, gtDonnée[llTabind]:rHaut, gtDonnée[llTabind]:rBas, gtDonnée[llTabind]:rDernier)
     
    		Chart1>>Series(llHistoNum)>>Addxy(llDateOCX, gtDonnée[llTabind]:lvolume, DateVersChaîne(lsDateDonnée), RGB(255,255,255))
     
    		llMMInd = TableauCherche(gtMM20,tcLinéaire,"sDate",lsDateDonnée)
    		SI llMMInd <> -1 ALORS
    			Chart1>>Series(llMM20Num)>>AddXy(llDateOCX, gtMM20[llMMInd]:rMoy, DateVersChaîne(lsDateDonnée), iVertClair)
    		FIN
     
    // Dés que je rajoute ces données, le chandelier est écrasé complètement
    		llStochastiqueInd = TableauCherche(gtSTO9,tcLinéaire,"sDate",lsDateDonnée)
    		SI llStochastiqueInd <> -1 ALORS
    			Chart1>>Series(llStochastique09KNum)>>AddXy(llDateOCX, gtSTO9[llStochastiqueInd]:rk, DateVersChaîne(lsDateDonnée), iVertFoncé)
    		FIN
     
    	FIN	// POUR llTabind = 1 A 30	// ---------------------------------------- Ajouter les données au graphique ------------------------------------------

  2. #2
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut la réponse
    Ayant trouvé la réponse tout seul et ayant aussi trouvé des questions similaires sur d'autres forums, je donnne donc la réponse pour ceux qui les mêmes problèmes

    Voici le code WLangage qui permet d'afficher 6 graphiques, sur 4 "axes", superposés les uns sous les autres, alignés sur leurs abscisses.


    llChandelleNum est entier
    llMM20Num est entier
    llMM50Num est entier
    llHistoNum est entier
    llStochastiqueNum est entier
    llMACDNum est entier

    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
    llChandelleNum = 0
    llMM20Num = 1
    llMM50Num = 2
     
    llHistoNum = 3
    llStochastiqueNum = 4
    llMACDNum = 5
     
    // Les infos des constantes sont trouvées en "listant" l'OCX avec OLE View du Visual
     
    {"Chart1"}>>RemoveAllSeries							// Nettoyage de tout ce qui aurait pu trainer en mémoire
     
    Chart1>>Aspect>>View3D = Faux						// On ne veut pas le graphe en 3 D
    Chart1>>Legend>>Visible = Faux						// Par défaut, la légende est affichée, mais nous on en veut pas
    Chart1>>Header>>Text>>Clear()						// ---- Donnons une entête à ce graphique
    Chart1>>Header>>Text>>Add("Le titre du graphe")
    Chart1>>Footer>>Text>>Clear							// ----- Donnons lui aussi un pied de page
    Chart1>>Footer>>Text>>Add("Libellé du 'pied' du graphe")
    Chart1>>Footer>>Visible = Vrai
    Chart1>>Footer>>Font>>Color = RVB(0,0,0)
    Chart1>>Footer>>Font>>Bold = Vrai
    Chart1>>Axis>>Bottom>>Labels>>MultiLine = Vrai		// Les libellés de l'axe des abscisse seront sur plusieurs lignes
     
    // Réinitialise l'axe des abscisses pour tous le graphique
    Chart1>>Axis>>Bottom>>PositionPercent = 0
     
    // Création des axes personnalisés verticaux
    Chart1>>Axis>>AddCustom(Faux)
    Chart1>>Axis>>Custom(0)>>PositionPercent = 0
    Chart1>>Axis>>Custom(0)>>StartPosition =0
    Chart1>>Axis>>Custom(0)>>EndPosition =25
     
    Chart1>>Axis>>AddCustom(Faux)
    Chart1>>Axis>>Custom(1)>>StartPosition =25
    Chart1>>Axis>>Custom(1)>>EndPosition =50
    Chart1>>Axis>>Custom(1)>>OtherSide = Vrai
     
    Chart1>>Axis>>AddCustom(Faux)
    Chart1>>Axis>>Custom(2)>>PositionPercent = 0
    Chart1>>Axis>>Custom(2)>>StartPosition =50
    Chart1>>Axis>>Custom(2)>>EndPosition =75
     
    Chart1>>Axis>>AddCustom(Faux)
    Chart1>>Axis>>Custom(3)>>StartPosition =75
    Chart1>>Axis>>Custom(3)>>EndPosition =100
    Chart1>>Axis>>Custom(3)>>OtherSide = Vrai
     
    Chart1>>AddSeries(11)	// Une série en chandelier
    Chart1>>AddSeries(0)		// Une série en courbe
    Chart1>>AddSeries(0)		// Une série en courbe
    Chart1>>AddSeries(1)		// Une série en histogramme
    Chart1>>AddSeries(0)		// Une série en courbe
    Chart1>>AddSeries(0)		// Une série en courbe
     
    Chart1>>Series(llHistoNum)>>Marks>>Visible = Faux				// Pas de "Mark" (ils y sont par défaut) sur les histogrammes
     
    // Chaque Série sera rattachée à un axe personnalisé
    Chart1>>Series(llChandelleNum)>>VerticalAxis = 3		
    Chart1>>Series(llMM20Num)>>VerticalAxis = 3			
    Chart1>>Series(llMM50Num)>>VerticalAxis = 3			
    Chart1>>Series(llHistoNum)>>VerticalAxis = 3			
    Chart1>>Series(llStochastiqueNum)>>VerticalAxis = 3		
    Chart1>>Series(llMACDNum)>>VerticalAxis = 3			
     
    // On affecte les séries aux Axes personnalisés, les 3 premières séries seront superposées sur le même axe vertical
    Chart1>>Series(llChandelleNum)>>VerticalAxisCustom = 0
    Chart1>>Series(llMM20Num)>>VerticalAxisCustom = 0
    Chart1>>Series(llMM50Num)>>VerticalAxisCustom = 0
    Chart1>>Series(llHistoNum)>>VerticalAxisCustom = 1
    Chart1>>Series(llStochastiqueNum)>>VerticalAxisCustom = 2
    Chart1>>Series(llMACDNum)>>VerticalAxisCustom = 3
     
    // ---- On laisse l'OCX générer des valeurs exemples
    Chart1>>Series(llChandelleNum)>>FillSampleValues(250)
    Chart1>>Series(llMM20Num)>>FillSampleValues(250)
    Chart1>>Series(llMM50Num)>>FillSampleValues(250)
    Chart1>>Series(llHistoNum)>>FillSampleValues(250)
    Chart1>>Series(llStochastiqueNum)>>FillSampleValues(250)
    Chart1>>Series(llMACDNum)>>FillSampleValues(250)

Discussions similaires

  1. "pcolor" avec des axes polaires
    Par ERCO503 dans le forum MATLAB
    Réponses: 9
    Dernier message: 27/03/2014, 20h29
  2. graphique avec des dates en abscisse
    Par ch7787 dans le forum Excel
    Réponses: 1
    Dernier message: 18/06/2010, 18h15
  3. Réponses: 0
    Dernier message: 13/11/2009, 09h34
  4. Graph de type "Line" avec des milliers de points
    Par meurwinn dans le forum Jasper
    Réponses: 0
    Dernier message: 20/03/2008, 15h52
  5. Piratage possible ou non avec des infors d'une form ?
    Par roudoudouduo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/10/2006, 21h45

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