Results 1 to 13 of 13

Thread: Chart, 2 balken op dezelfde dag

  1. #1

    Chart, 2 balken op dezelfde dag

    Er worden nu 2 balken op dezelfde dag weergegeven, maar de naam van de dag staat nu onder de groene balk.
    Hoe kan ik het voor elkaar krijgen dat deze iets verder naar rechts komt te staan zodat deze in het midden onder de Groene en Rode balk komt te staan ?
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	Chart_1.jpg 
Views:	19 
Size:	71.5 KB 
ID:	8229  

  2. #2
    Welke components gebruik je hiervoor? (Ik gebruik zelf geen FireMonkey - enkel VCL, dus weet niet of dit een FireMonkey component is?)

  3. #3
    Het TChart component

  4. #4
    Zit dat niet onder BottomAxis -> LabelsAlign en die dan zetten op alCenter? Dat lijkt me een property voor het alignen van de labels aan de onderkant van de chart.

  5. #5
    Dat heeft er wel een beetje invloed op, alleen verschuiven de dag namen nu een klein stukje naar links (dus de verkeerde kant op).

    Vul ik de Series zo wel op de juiste manier om per dag 2 staven te kunnen weergeven ?

    Series1.Add (10, 'MA', TAlphaColorRec.Green);
    Series1.Add (20, '', TAlphaColorRec.Red);

    Series1.Add (12, 'DI', TAlphaColorRec.Green);
    Series1.Add (24, '', TAlphaColorRec.Red);

    Series1.Add (8, 'WO', TAlphaColorRec.Green);
    Series1.Add (22, '', TAlphaColorRec.Red);

    Series1.Add (14, 'DO', TAlphaColorRec.Green);
    Series1.Add (21, '', TAlphaColorRec.Red);

    Series1.Add (13, 'VR', TAlphaColorRec.Green);
    Series1.Add (25, '', TAlphaColorRec.Red);

    Series1.Add (14, 'ZA', TAlphaColorRec.Green);
    Series1.Add (28, '', TAlphaColorRec.Red);

    Series1.Add (6, 'ZO', TAlphaColorRec.Green);
    Series1.Add (12, '', TAlphaColorRec.Red);

  6. #6
    Ik ben zelf niet bekend met TChart (of TeeCharts) maar ik gebruik wel eigen charts, en ik zie dat je nu alle dagen in 1 serie zet. Ik zou denken dat je 2 series moet maken. 1 Voor de huidige en een als vergelijking. Daarvoor zouden normaal gezien die series zijn maar dit is voor mij ook giswerk omdat ik deze zelf niet gebruik.

  7. #7
    Ik ben ook (als test) bezig geweest met 2 series, maar daarbij wist ik dan niet hoe en waar ik de dag namen op kon/moest geven.

  8. #8
    Kan je dat niet in de serie zelf ingeven? Dit lijkt me het logischte - maar zoals ik al zei gebruik ik deze zelf niet, dus ik kan je er niet verder mee helpen helaas. Wellicht iemand anders die deze wel gebruikt heeft?
    De standaard TChart is volgens mij ook van Steema (TeeCharts), wellicht dat je iets uit hun examples kan halen wat je op weg kan helpen?

  9. #9
    Het werkt nu, uiteindelijk bleek het eenvoudig nadat ik met een nieuw vers project begonnen was.
    Gebruik inderdaad 2 series, en de Dag naam plaats ik nu alleen in de 1e serie.

  10. #10
    Oke fijn dat het toch gelukt is, wellicht handig voor toekomstige gebruikers die tegen hetzelfde probleem aan lopen dat je een klein code voorbeeld kan posten met hoe je het nu doet?

  11. #11
    Plaats een TChart op het Form
    Dubbelklik op het TChart
    Add, en kies voor het type Bar
    Serie1 is nu gemaakt en is van het Type Bar
    Maak er nog een:
    Add, en kies weer voor het type Bar

    Code:
    //De Oude Grafiek Gegeven wissen
     Series1.Clear;
     Series2.Clear;
    
     //Grafiek Instellingen
     Chart1.Visible := True;
     Chart1.Title.Text.Text := 'Titel Tekst';
     Chart1.Title.Font.Size := 40; //Titel Tekst grote
     Chart1.Title.Font.Color := TAlphaColorRec.Black; //Titel Letter Kleur
     Chart1.LeftAxis.Automatic := True; //De Linker Schaal verdeleing Handmatig instellen: Uit
     Chart1.BottomAxis.LabelsFont.Size := 18; //Letter grote onder de Grafiek
     Chart1.View3d := False; //2D Weergave
     Series1.Marks.Visible := False; //Geen Tekst veldje boven elke Staaf van Serie 1
     Series2.Marks.Visible := False; //Geen Tekst veldje boven elke Staaf van Serie 2
    
     //Legenda (Info veld rechts naast het Grafiek)
     Chart1.Legend.Visible := True; //Wel of niet Weergeven, en bij 'True' (wel weergeven), kiezen uit welke Serie
     Series1.ShowInLegend := False; //
     Series2.ShowInLegend := True;  //Data uit Serie 2 Weergeven in de Legenda
    
     //Welke Serie('s) Weergeven:
     Series1.Visible :=  True; //Serie 1 Weergeven
     Series2.Visible :=  True; //Serie 2 Weergeven
    
    
     //De Data vullen:
     Series1.Add (10, 'MA', TAlphaColorRec.Green);
     Series2.Add (20, 'MA', TAlphaColorRec.Red);
    
     Series1.Add (12, 'DI', TAlphaColorRec.Green);
     Series2.Add (24, 'DI', TAlphaColorRec.Red);
    
     Series1.Add ( 8, 'WO', TAlphaColorRec.Green);
     Series2.Add (22, 'WO', TAlphaColorRec.Red);
    
     Series1.Add (14, 'DO', TAlphaColorRec.Green);
     Series2.Add (21, 'DO', TAlphaColorRec.Red);
    
     Series1.Add (13, 'VR', TAlphaColorRec.Green);
     Series2.Add (25, 'VR', TAlphaColorRec.Red);
    
     Series1.Add (14, 'ZA', TAlphaColorRec.Green);
     Series2.Add (28, 'ZA', TAlphaColorRec.Red);
    
     Series1.Add ( 6, 'ZO', TAlphaColorRec.Green);
     Series2.Add (12, 'ZO', TAlphaColorRec.Red);

  12. #12
    Ik vind die TAlphaColorRec.Green en .Red zo lelijk in de source. Dat moet toch anders kunnen?

    Ik zou dit doen.

    Delphi Code:
    1. Series1.SeriesColor := TAlphaColorRec.Green; // of .Color maar die zijn hetzelfde
    2. Series2.SeriesColor := TAlphaColorRec.Red;
    3. Series1.Add(10, 'Ma');
    4. Series2.Add(20, 'Ma');
    5. Series1.Add(12, 'Di');
    6. Series2.Add(24, 'Di');
    7. // etc.

    Nu maakt dat in je uiteindelijke code misschien niet zoveel uit omdat je dit in een loopje zal vullen maar het ziet er wat beter uit. Plus dat je met één regel de kleur kan veranderen (er bestaat een kans dat dat niet kan als je de kleuren individueel meegeeft).

  13. #13
    Het voordeel is dat ik op mijn manier elke Staaf een andere kleur zou kunnen geven, ook bij een Lijn grafiek maak ik hier gebruik van om onder of boven een bepaalde waarde een ander kleur te gebruiken:

    Code:
     if  (Luchtdruk_Int > 1029) then Add (StrToFloat(Memo1.Lines[Cnt*2]), Memo1.Lines[(Cnt*2)+1], TAlphaColorRec.Red);
     if ((Luchtdruk_Int <= 1029) and (Luchtdruk_Int >= 987)) then Add (StrToFloat(Memo1.Lines[Cnt*2]), Memo1.Lines[(Cnt*2)+1], TAlphaColorRec.Black);
     if  (Luchtdruk_Int < 987) then Add (StrToFloat(Memo1.Lines[Cnt*2]), Memo1.Lines[(Cnt*2)+1], TAlphaColorRec.Blue);

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •