Sign in Join
Wiki copytemporary

TAChart Tutorial: Stacked BarSeries/fi: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Johdanto
22
33![](/wiki-images/7/7e/StackedBarSeries_Final.png)
44
55[[TAChart Tutorial: BarSeries/fi|Pylväskuvaajan opetusohjelmassa]] näytettiin, miten luodaan kaavio jossa on vierekkäiset pylväät. Pinotut pylväät ovat toinen suosittu muunnos pylväskaaviosta jossa ryhmitellyt tiedot pinotaan toistensa päälle. Tällä tavoin yksittäiset maksut ja niiden summat voidaan osoittaa samassa kaaviossa. On myös muunnos, jossa kaikkien pylväiden korkeudet normalisoidaan 100%:n (samaan korkeuteen) tämä korostaa suhteellista osuutta [1](http://blog.visual.ly/how-groups-stack-up-when-to-use-grouped-vs-stacked-column-charts/) .
66
77Tässä opetusohjelmassa sovelletaan tätä tekniikkaa uuden sukupolven uusiutuvien energialähteiden edistymistä Saksassa vuosien 1990 ja 2012 välillä. Tiedot ovat peräisin [wikipediasta](http://en.wikipedia.org/wiki/Renewable_energy_in_Germany) ja kattavat vesivoiman, tuulivoiman, biomassan, aurinkosähkön ja maalämpöenergian.
88
99Pylväskuvaajan [[TAChart documentation|TBarSeries]] lisäksi tässä sivutaan myös [[TAChart documentation|TRandomChartSource]], [[TAChart documentation|TCalculatedChartSource]] ja `TChartStyles` komponentteja.
1010
1111Kuten tavallista, tässä oppaassa oletetaan että tiedetään jo perustiedot Lazaruksesta, Object Pascal ohjelmointikielestä ja ja keskeiset käsitteet TAChart-komponentista jotta voidaan seurata opetusohjelmaa. Jos ei ole koskaan työskennellyt pylväskuvaajien parissa olisi hyvä tarkastella siihen liittyvän opetusohjelma joka selittää [[TAChart Tutorial: BarSeries/fi|vierekkäisten pylväskuvaajien]] käyttöä. Suosittelemme myös [[TAChart documentation|TAChart dokumentaation]] tutkimista.
1212
1313## Kaavion suunnittelu satunnaisella datalla
1414
1515### Esivalmistelu
1616
1717Luo uusi projekti. Lisää `TAChart` komponentti ja aseta sen align arvoon `alClient` jolloin se täyttää lomakkeen kokonaan. Ehkä lomakkeen kokoa pitäisi lisätä hieman, mutta tämä voidaan tehdä myöhemmin, kun nähdään datat.
1818
1919Ennen "todellisia tietoja" järjestään ja muotoillaan kaavio sopivaksi. Komponenttimuokkaimella saadaan nopeasti vastaus tehdyistä muutoksista. Nopeana datan lähteenä voidaan käyttää [[TAChart documentation|TRandomChartSource]]-komponenttia. TRandomChartSource vain tuottaa satunnaisia ??tietoja, mutta on erinomainen apulainen optimoida kaavion ulkonäköa ilman että kääntää projektin uudestaan ??ja uudestaan. Tietenkin lopussa, poistamme TRandomChartSource:n ja korvata sen oikealla datalla.
2020
2121Joten, aloitetaan: Lisätään `TBarSeries` (pylväskuvaaja) ja `TRandomChartSource` lomakkeelle ja aseta linkki RandomChartSource pylväskuvaajan `Source` ominaisuuteen. (Jos tarvitset lisätietoja on katso [[TAChart Tutorial: BarSeries/fi|pylväskuvaajan]] opetusohjelmaa ). Valitaan RandomChartSource ja asetetaan `XMin` 1990 ja `XMax` 2012 (joka on alkuperäisten tietojen väli [wikipedian artikkelissa](http://en.wikipedia.org/wiki/Renewable_energy_in_Germany) ). Tämä väli on 23 vuotta, niin asetetaan `PointsNumber` arvoon 23 jotta saadaan pylväs vuosittain. Lopuksi asetetaan YMax on 1 (tai johonkin muuhun arvoon). Nyt pylväskuvaaja ponnahtaa kaavion:
2222
2323![](/wiki-images/e/e4/StackedBarSeries_Step1.png)
2424
2525### Useita y:n arvoja
2626
2727Jos on lukenut toisen [[TAChart Tutorial: BarSeries/fi|pylväskuvaajan opetusohjelman]] voi yllättyä nyt: Siinä opetusohjelmassa käytettiin yhtä kuvaajaa kullekin ryhmälle. Kun lopullinen uusiutuvan energian kaavioon tulee olemaan useita erilaisia pylväitä, yksi kutakin energian lajia. Joten, eikö pitäisi lisätä enemmän kuvaajia? Ei. Tarvitaan vain yksi koska ei voida seurata vierekkäisten pylväskuvaajien strategiaa täällä. Tämä johtuu siitä, `TAChart` ei voi pinota eri kuvaajien pylväitä toistensa päälle. Kukin pylväs on peräisin yhteisestä "nollatasosta" ylös (tai alas) data-arvo - ei ole tapaa siirtää pylväs alkamaan edellisen pylvään päältä.
2828
2929Mitä tehdä?
3030
3131Pinotussa pylväskuvaajalla, `TAChart` tarjoaa erityinen käsite useita y: n arvoja per kuvaajan datapistettä kohti. Jos tutkii käännösyksikön `TACustomSource` lähdekoodia niin löytyy tietue
3232
3333``` pascal
3434type
3535 TChartDataItem = packed record
3636 public
3737 X, Y: Double;
3838 Color: TChartColor;
3939 Text: String;
4040 YList: TDoubleDynArray;
4141 ...
4242 end;
4343```
4444
4545Tämä on sisäinen rakenne jolla esitetään kuvaajan arvot. Tavanomaisten `x` ja `y` -koordinaattien lisäksi, jotka tiedetään jo muista kaaviotyypeistä ja opetusohjelmista, siellä on myös datakenttä `YList` johon varaudutaan varastoimaan ylimääräisiä y-arvoja. ChartSource:lla on ominaisuus `YCount` jossa määritellään taulukon `YList` pituus - valitse RandomChartSource ja vilkaise sitä komponenttimuokkaimessa. Mutta pitää tietää, että `YCount` sisältää myös vakio y:n arvon, `YList` taulukon pituus on muiden y: n arvojen osalta siis `YCount-1` .
4646
4747Lopullinen kaavio sisältää viisi saraketyypppä ( "vesivoimaa", "tuulivoima", "biomassa", "aurinkosähkö" ja "maalämpö"). Siksi anna `YCount` varten arvo `5`. Tämä pinoaa viisi pylvästä yhteen.
4848
4949![](/wiki-images/4/46/StackedBarSeries_Step2.png)
5050
5151### ChartStyles:n käyttö
5252
5353Valitettavasti kaikki pylvään osapalkit ovat samanvärisiä. Miten voidaan muuttaa väriä jokaisella tasolla?
5454
5555Komponenttipaletilla löytyy komponentti tähän: **TChartStyles**. `TChartStyle` on komponentti, joka mahdollistaa muokata kunkin pylväskuvaajan ulkoasua (eli "tyyliä") .
5656
5757Mennään komponenttipaletille, etsitään `TChartStyle` -komponentti joka on (todennäköisesti) 9. kuvake (sellainen kuvake jossa värillisten palkkien/pylväiden edessä on pensseli tai harja) ja lisäätään kyseinen komponentti lomakkeelle.
5858
5959![](/wiki-images/6/6c/ChartStyles.png)
6060
6161Ensin täytyy yhdistää TBarSeries ja TChartStyles komponentit. Kuvaajassa (TBarSeries) on tätä vastaava ominaisuus `Styles` tähän tarkoitukseen.
6262
6363Valitaan sitten komponentti (TChartStyles) ja mennään sen Styles omaisuuteen komponenttimuokkaimella. Klikkaa "..." kolme pistettä painiketta joka avaa ChartStyles editorin. Tässä voidaan lisätä tyyli kunkin ryhmän palkkeihin klikkaamalla "+" -painiketta viisi kertaa. Vaihtoehtoisesti voit klikata hiirellä `ChartStyles1` puun "Styles" solmun kohtaa ja valita "Lisää kohde".
6464
6565![](/wiki-images/c/c5/ChartStylesEditor.png) ![](/wiki-images/a/a8/ChartStylesEditor_Properties.png)
6666
6767Komponenttimuokkaimen puussa ChartStyleList:n alta voidaan valita kunkin tyyli ja nähdä tyylin ominaisuudet komponenttimuokkaimessa. `TChartStyle` indeksin 0 kuuluu alimmaisen palkille, indeksi 1 kuuluu seuraavalle palkille jne. Palkin värin muuttaminen onnistuu muuttamalla tyylin `Brush.Color` väriä. Kaavio välittömästi päivittää ja näyttää vastaavan palkin uudella värillä. Toista tämä muissakin tyyleissä. Tutustumalla `TChartStyle` muihin ominaisuuksiin oppii, mitä muuta sillä voidaan tehdä.
6868
6969### Näytetään ChartStyles otsikkopalkissa
7070
7171Käyttämällä `ChartStyle` ominaisuutta `Text` voit määrittää näytettävä teksti otsikkopalkissa, kullekin palkin tasolle pylväässä. Kirjoita kunkin tyylin `Text` kohtaan vuorotellen "Vesivoima", "tuulivoima", "Biomassa", "Aurinkosähkö" ja "maalämpö" , alkaen indeksistä nolla.
7272
7373Aikaisemmin opitusta jo tiedetään että otsikkopalkki näytetään kun kaavion `Legend.Visible` ominaisuuden arvona on `true`. Se on oletusarvoisesti arvossa `false`. Se kuitenkin näyttää vain yhden merkinnän: punainen ruutu vastaa pylväskuvaajan käyttöä ilman `ChartStyles`. Tämä korjataan valitsemalla BarSeries ja avataan `Legend` solmu komponenttimuokkaimessa. Ominaisuus `Legend.Multiplicity` on edelleen arvossa `lmSingle` joka tuottaa vain yhden kohteen per kuvaaja. Muuta sen sijaan arvoon `lmStyle`. Tämä on oikea asetus, kun kuvaaja käyttää tyylejä. Nyt kaavio lukee kunkin tyylin `Text` arvon ja lisää ne otsikkopalkkiin.
7474
7575![](/wiki-images/9/97/StackedBarSeries_Step3.png)
7676
7777### Normalisoidaan pinotut pylväät 100%
7878
7979Kehityksen suhteellisen osuuden korostamiseksi pylväsryhmät voidaan pinotuissa pylväskaaviossa normalisoida 100%, eli kukin pylvään palkin arvo korvataan sen prosentuaalinen osuudella pinokorkeudessa.
8080
8181`TAChart` voi tehdä tämän kun hieman muutetaan nykyistä ohjelmaa. Keskeinen asia on tässä käyttää `TCalculatedChartSource`-komponenttia joka poimii tiedot, jotka liittyvät käytössä olevaan chartsource:n ja laskee suhteellisen osuuden.
8282
8383Lisää `TCalculatedChartSource` lomakkeelle. Aseta sen ominaisuus `Origin` osoittamaan RandomChartSource:a. Tämä tarkoittaa, että CalculatedChartSource tuottaa laskelmien tietojen perusteella tietoja kaavioon. On tärkeää, että jättää `AccumulationMethod` sen oletukseen, `camNone` , mikä tarkoittaa sitä, että lähtötiedot johdetaan ulostuloon muuttumattomana. Muut vaihtoehdot yhdistäisi lähtötietoihin arvot uudet arvot: `camAverage`, esimerkiksi aiheuttaisi keskiarvon laskemisen datapisteiden sisällä `AccumulationRange`. Mutta miten saamme prosenttilaskun jos `camNone` ei muuta mitään? Yksinkertaisesti sillä on `Percentage` ominaisuus! Normalisoituminen levitetään laskelmien jälkeen. Aseta `Percentage` arvoon `true` .
8484
8585Kaavion muutosta ei nähdä vielä, koska kuvaaja vielä saa sen tiedot RandomChartSource:sta. Mennään BarSeries ja valitaan `Source` ominaisuuteen CalculatedChartSource.
8686
8787Nyt näyttää tältä!
8888
8989![](/wiki-images/8/8b/StackedBarSeries_Percentage.png)
9090
9191## Näytetään todellisia tietoja
9292
9393Nyt kun kaavio on käytännössä lähes viimeistelty niin on aika poistaa satunnainen data ja korvata se "todellisilla arvoilla". Kuten johdannossa todettiin, haluamme näyttää uusiutuvan energian kehittymistä eri vuosina. Tiedot löytyvät [wikipedian](http://en.wikipedia.org/wiki/Renewable_energy_in_Germany) artikkelin lopusta
9494
9595Aluksi tehdään rohkea teko: poistetaan RandomChartSource, sitä ei enään tarvita - kaikki aiemmat tiedot ovat menetetään ja kaavio tyhjenee ...
9696
9797Miten saadaan uudet tiedot kuvaajalle?
9898
9999### Tarjotaan todellisia tietoja pylväskuvaajalle
100100
101101Lisätään `TListChartSource` lomakkeelle. Se on tietojen koti. Muistetaan että jokainen datapiste koostuu projektissa viidestä y-arvosta. Siksi on asetettava tämän chartsource:n `YCount` arvoon `5` Useita Y-data-arvoja voidaan laittaa luetteloon metodilla `AddXYList` jossa voit määrittää kaikki y-arvot kerralla.
102102
103103``` pascal
104104function TListChartSource.AddXYList(
105105 AX: Double; const AY: array of Double;
106106 const ALabel: String = '';
107107 AColor: TChartColor = clTAColor): Integer;
108108```
109109
110110Mutta ei saa unohtaa, että `Double` array elementtien määrä täytyy vastata `YCount` määrittelyä.
111111
112112Yksinkertaisuuden vuoksi kirjoitettava data otetaan wikipedian sivulta ja annetaan ne ohjelmalle lomakkeen luonnissa `OnCreate` tapahtumassa kutsumalla ListChartSource:n `AddXYList` metodia:
113113
114114``` pascal
115115procedure TForm1.FormCreate(Sender: TObject);
116116begin
117117 with ListChartSource1 do begin
118118 // Y0 = Vesivoima
119119 // Y1 = Tuulivoima (off-shore + on-shore)
120120 // Y2 = Biomassa + biojäte
121121 // Y3 = Aurinkosähkö
122122 // Y4 = Maalämpö
123123 // Kaikki arvot GWh
124124 // Lähde: http://en.wikipedia.org/wiki/Renewable_energy_in_Germany
125125 AddXYList(1990, [15580, 71, 221+1213, 0.6, 0]);
126126 AddXYList(1991, [15402, 100, 260+1211, 1.6, 0]);
127127 AddXYList(1992, [18091, 275, 296+1262, 3.2, 0]);
128128 AddXYList(1993, [18526, 600, 433+1203, 5.8, 0]);
129129 AddXYList(1994, [19501, 909, 569+1306, 8, 0]);
130130 AddXYList(1995, [20747, 1500, 665+1348, 11, 0]);
131131 AddXYList(1996, [18340, 2032, 759+1343, 16, 0]);
132132 AddXYList(1997, [18453, 2955, 880+1397, 26, 0]);
133133 AddXYList(1998, [18452, 4489, 1642+1618, 32, 0]);
134134 AddXYList(1999, [20686, 5528, 1849+1740, 42, 0]);
135135 AddXYList(2000, [24867, 9513, 2893+1844, 64, 0]);
136136 AddXYList(2001, [23241, 10509, 3348+1859, 75, 0]);
137137 AddXYList(2002, [23662, 15786, 4089+1949, 162, 0]);
138138 AddXYList(2003, [17722, 18713, 6086+2161, 313, 0]);
139139 AddXYList(2004, [19910, 25509, 7960+2117, 556, 0.2]);
140140 AddXYList(2005, [19576, 27229, 10978+3047, 1282, 0.2]);
141141 AddXYList(2006, [20042, 30710, 14841+3844, 2220, 0.4]);
142142 AddXYList(2007, [21169, 39713, 19760+4521, 3075, 0.4]);
143143 AddXYList(2008, [20446, 40574, 22872+4659, 4420, 17.6]);
144144 AddXYList(2009, [19036, 30602+38, 25989+4352, 6583, 18.8]);
145145 AddXYList(2010, [20956, 37619+174, 29085+4781, 11683, 27.7]);
146146 AddXYList(2011, [17674, 48315+568, 31920+5000, 19340, 18.8]);
147147 AddXYList(2012, [21200, 45325+675, 35950+4900, 28000, 25.4]);
148148 end;
149149end;
150150```
151151
152152Pitää muistaa linkittää ListChartSource CalculatedChartsource:n `Origin` kohtaan ja kääntää. Tälläinen on tulos kun `CalculatedChartSource.Percentage = true`:
153153
154154![](/wiki-images/c/c9/StackedBarSeries_Percentage_RealData.png)
155155
156156### Viimeistely
157157
158158Kaavion viimeistelyksi lisää otsikot akseleille ("Year" tai "Vuosi" vaaka-akselille. "Energy, GWh" tai "Energia GWh" pystyakselille. Lisäksi olisi hienoa näyttää otsikko kaavion yläpuolella ("Generation of renewable energy in Germany" tai "Uuden sukupolven uusiutuvien energialähteiden edistyminen Saksassa" ) ja alatunnisteeksiviittaus wikipediaan.
159159
160160Vaihda kaavion taustaväri (`BackColor`) valkoiseksi (`clWhite`). Vähennä `Margins.Bottom` arvoon `0` joka poistaa välin pylvään ja `x` akselin välillä.
161161
162162Lopuksi voisi lisätä checkbox:n (valintaruudun) vaihtamaan normaalin ja prosenttiosuuden näyttämiseen pinotussa pylväskaaviossa. Koodi liitetään checkbox:n `OnClick` tapahtumaan.
163163
164164![](/wiki-images/7/7e/StackedBarSeries_Final.png)
165165
166166## Yhteenveto
167167
168168Nämä ovat vaiheet luoda pinottu pylväsdiagrammi:
169169
170170- Tarvitaan vain yksi kuvaaja mutta se sisältää monia y-arvoja.
171171- ChartSource:ssa pitää asettaa `YCount`
172172- Data lisätään kutsumalla `AddXYList` metodia.
173173
174174taulukkoparametrin on vastattava `YCount` arvoa.
175175
176176- Lisää `TChartStyles` komponentti lomakkeelle ja linkitä ominaisuus `Style` pylväskuvaajaan.
177177- Jokaiselle pinotulle pylvästasolle lisätään oma `TChartStyle`.
178178
179179- Värin valinta pinotussa pylväässä tapahtuu vastaavassa ChartStyle:ssä. Lisäksi kirjoita ChartStyle:n `Text` ominaisuuteen teksti joka myös näkyy legend kentässä.
180180- Jotta legend kentässä näkyy teksti niin kuvaajan `Legend.Multiplicity` arvo pitää olla `lmStyle`
181181
182182- Normalisoidun pinotun pylväskaavion luomiseksi, lisää `TCalculatedChartSource` lomakkeelle. Linkki sen `Origin` ominaisuudessa chartsourceen kertoo piirtämiseen saatavan datan. Käytä CalculatedChartSource `Source`:n kuvaajassa. Aseta CalculatedChartSource:n `Percentage` ominaisuus arvoon `true` normalisoinnin aktivoimiseksi 100%.
183183- Samoja menetelmiä voidaan soveltaa kun tehdään pinottu ala tai viiva-kuvaajaa.
184184
185185## Lähdekoodi
186186
187187### Project file
188188
189189``` pascal
190190program project1;
191191
192192{$mode objfpc}{$H+}
193193
194194uses
195195 {$IFDEF UNIX}{$IFDEF UseCThreads}
196196 cthreads,
197197 {$ENDIF}{$ENDIF}
198198 Interfaces, // this includes the LCL widgetset
199199 Forms, Unit1, tachartlazaruspkg
200200 { you can add units after this };
201201
202202{$R *.res}
203203
204204begin
205205 RequireDerivedFormResource := True;
206206 Application.Initialize;
207207 Application.CreateForm(TForm1, Form1);
208208 Application.Run;
209209end.
210210```
211211
212212### Unit1.pas
213213
214214``` pascal
215215unit Unit1;
216216
217217{$mode objfpc}{$H+}
218218
219219interface
220220
221221uses
222222 Classes, SysUtils, FileUtil, TAGraph, TASeries, TASources, TAStyles,
223223 Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls;
224224
225225type
226226
227227 { TForm1 }
228228
229229 TForm1 = class(TForm)
230230 CalculatedChartSource1: TCalculatedChartSource;
231231 Chart1: TChart;
232232 Chart1BarSeries1: TBarSeries;
233233 ChartStyles1: TChartStyles;
234234 CheckBox1: TCheckBox;
235235 ListChartSource1: TListChartSource;
236236 Panel1: TPanel;
237237 procedure CheckBox1Click(Sender: TObject);
238238 procedure FormCreate(Sender: TObject);
239239 private
240240 { private declarations }
241241 public
242242 { public declarations }
243243 end;
244244
245245var
246246 Form1: TForm1;
247247
248248implementation
249249
250250{$R *.lfm}
251251
252252{ TForm1 }
253253
254254procedure TForm1.FormCreate(Sender: TObject);
255255begin
256256 with ListChartSource1 do begin
257257 // Y0 = Hydropower
258258 // Y1 = Wind energy (off-shore + on-shore)
259259 // Y2 = Biomass + biogenic share of waste
260260 // Y3 = Photovoltaics
261261 // Y4 = Geothermal energy
262262 // all values in GWh
263263 // source: http://en.wikipedia.org/wiki/Renewable_energy_in_Germany
264264 AddXYList(1990, [15580, 71, 221+1213, 0.6, 0]);
265265 AddXYList(1991, [15402, 100, 260+1211, 1.6, 0]);
266266 AddXYList(1992, [18091, 275, 296+1262, 3.2, 0]);
267267 AddXYList(1993, [18526, 600, 433+1203, 5.8, 0]);
268268 AddXYList(1994, [19501, 909, 569+1306, 8, 0]);
269269 AddXYList(1995, [20747, 1500, 665+1348, 11, 0]);
270270 AddXYList(1996, [18340, 2032, 759+1343, 16, 0]);
271271 AddXYList(1997, [18453, 2955, 880+1397, 26, 0]);
272272 AddXYList(1998, [18452, 4489, 1642+1618, 32, 0]);
273273 AddXYList(1999, [20686, 5528, 1849+1740, 42, 0]);
274274 AddXYList(2000, [24867, 9513, 2893+1844, 64, 0]);
275275 AddXYList(2001, [23241, 10509, 3348+1859, 75, 0]);
276276 AddXYList(2002, [23662, 15786, 4089+1949, 162, 0]);
277277 AddXYList(2003, [17722, 18713, 6086+2161, 313, 0]);
278278 AddXYList(2004, [19910, 25509, 7960+2117, 556, 0.2]);
279279 AddXYList(2005, [19576, 27229, 10978+3047, 1282, 0.2]);
280280 AddXYList(2006, [20042, 30710, 14841+3844, 2220, 0.4]);
281281 AddXYList(2007, [21169, 39713, 19760+4521, 3075, 0.4]);
282282 AddXYList(2008, [20446, 40574, 22872+4659, 4420, 17.6]);
283283 AddXYList(2009, [19036, 30602+38, 25989+4352, 6583, 18.8]);
284284 AddXYList(2010, [20956, 37619+174, 29085+4781, 11683, 27.7]);
285285 AddXYList(2011, [17674, 48315+568, 31920+5000, 19340, 18.8]);
286286 AddXYList(2012, [21200, 45325+675, 35950+4900, 28000, 25.4]);
287287 end;
288288end;
289289
290290procedure TForm1.CheckBox1Click(Sender: TObject);
291291begin
292292 CalculatedChartSource1.Percentage := Checkbox1.Checked;
293293 if Checkbox1.Checked then
294294 Chart1.LeftAxis.Title.Caption := 'Contribution, %'
295295 else
296296 Chart1.LeftAxis.Title.Caption := 'Energy, GWh';
297297end;
298298
299299end.
300300```
301301
302302### Unit1.lfm
303303
304-``` pascal
304+``` lfm
305305object Form1: TForm1
306306 Left = 596
307307 Height = 270
308308 Top = 353
309309 Width = 517
310310 Caption = 'Form1'
311311 ClientHeight = 270
312312 ClientWidth = 517
313313 OnCreate = FormCreate
314314 LCLVersion = '1.3'
315315 object Chart1: TChart
316316 Left = 0
317317 Height = 248
318318 Top = 22
319319 Width = 517
320320 AxisList = <
321321 item
322322 Minors = <>
323323 Title.LabelFont.Orientation = 900
324324 Title.LabelFont.Style = [fsBold]
325325 Title.Visible = True
326326 Title.Caption = 'Energy, GWh'
327327 end
328328 item
329329 Alignment = calBottom
330330 Minors = <>
331331 Title.LabelFont.Style = [fsBold]
332332 Title.Visible = True
333333 Title.Caption = 'Year'
334334 end>
335335 BackColor = clWhite
336336 Foot.Alignment = taLeftJustify
337337 Foot.Brush.Color = clBtnFace
338338 Foot.Font.Color = clGray
339339 Foot.Text.Strings = (
340340 'Source: http://en.wikipedia.org/wiki/Renewable_energy_in_Germany'
341341 )
342342 Foot.Visible = True
343343 Legend.Visible = True
344344 Margins.Bottom = 0
345345 Title.Brush.Color = clBtnFace
346346 Title.Font.Color = clBlue
347347 Title.Font.Style = [fsBold]
348348 Title.Text.Strings = (
349349 'Generation of renewable energy in Germany'
350350 )
351351 Title.Visible = True
352352 Align = alClient
353353 ParentColor = False
354354 object Chart1BarSeries1: TBarSeries
355355 Legend.Multiplicity = lmStyle
356356 BarBrush.Color = clRed
357357 Source = CalculatedChartSource1
358358 Styles = ChartStyles1
359359 end
360360 end
361361 object Panel1: TPanel
362362 Left = 0
363363 Height = 22
364364 Top = 0
365365 Width = 517
366366 Align = alTop
367367 BevelOuter = bvNone
368368 ClientHeight = 22
369369 ClientWidth = 517
370370 TabOrder = 1
371371 object CheckBox1: TCheckBox
372372 Left = 8
373373 Height = 19
374374 Top = 0
375375 Width = 119
376376 Caption = 'Normalize to 100%'
377377 OnClick = CheckBox1Click
378378 TabOrder = 0
379379 end
380380 end
381381 object ChartStyles1: TChartStyles
382382 Styles = <
383383 item
384384 Brush.Color = clBlue
385385 Text = 'Hydropower'
386386 end
387387 item
388388 Brush.Color = clSkyBlue
389389 Text = 'Wind energy'
390390 end
391391 item
392392 Brush.Color = clGreen
393393 Text = 'Biomass'
394394 end
395395 item
396396 Brush.Color = clYellow
397397 Text = 'Photovoltaic'
398398 end
399399 item
400400 Brush.Color = clMaroon
401401 Text = 'Geothermal'
402402 end>
403403 left = 336
404404 top = 96
405405 end
406406 object CalculatedChartSource1: TCalculatedChartSource
407407 Origin = ListChartSource1
408408 left = 104
409409 top = 96
410410 end
411411 object ListChartSource1: TListChartSource
412412 YCount = 5
413413 left = 232
414414 top = 96
415415 end
416416end
417417```
418418
419419---
420420*From the Free Pascal wiki, page "TAChart Tutorial: Stacked BarSeries/fi", as it stood on 2020-02-29 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history