wizard 0 Share Posted April 4, 2006 Sziasztok! Gombnyomásra szeretném ábrázolni egy Chart-tal az A_ertek/x függvényt. (p: 1/x) Mivel 0-ban értelmetlen, ezért 2 ciklussal oldottam meg. Az egyik az elsõ, míg a másik a III. síknegyedben rajzol. A legnagyobb gond az vele, hogy a -1 es az 1 pontban lévõ értékeket összekoti egy egyenes vonallal. Hogyan lehet ezt kiküszöbölni? A button click ezt tartalmazza: For i := -5 to -1 do begin Series1.AddXY(i,(A_ertek/i),FloatToStr(i),clBlue); Chart1.SeriesList[0]:=Series1; end; For i := 1 to 5 do begin Series1.AddXY(i,(A_ertek/i),FloatToStr(i),clBlue); Chart1.SeriesList[0]:=Series1; end; A koordináta-rendszer beállításai meg itt vannak: procedure TForm1.Chart1BeforeDrawAxes(Sender: TObject); begin with Chart1 do begin if LeftAxis.Maximum - LeftAxis.Minimum = 0 then BottomAxis.PositionPercent := 50 else BottomAxis.PositionPercent := 100 - ((LeftAxis.Maximum /(LeftAxis.Maximum - LeftAxis.Minimum)) * 100); if BottomAxis.Maximum - BottomAxis.Minimum = 0 then LeftAxis.PositionPercent := 50 else LeftAxis.PositionPercent := 100 - ((BottomAxis.Maximum /(BottomAxis.Maximum - BottomAxis.Minimum)) * 100); Repaint; end; end; A másik gondom pedig az, hogy a függvény maximuma a III síknegyedben a -1. Pedig az lenne az igazán szép megoldás, ha minél jobban meg tudnám közelíteni a 0-t. Ezt elõször úgy gondoltam, hogy a ciklust -5-tõl futtatnám pl. 0.00001-ig, de ez itt nem megengedett. (Mint pl a Basicnél.) Az i-t nem engedi valósként deklarálni. Tudtok erre valami jó megoldást? Elõre is köszönöm! Link to comment Share on other sites More sharing options...
arpsoft 12 Share Posted April 4, 2006 Csúnya megoldás, de mi lenne, ha külön series-ként ábrázolnád a két síknegyedet, és 0-hoz beraknál valami akkora értéket, hogy kiessen az ábrázolt tartományból? Valami ilyesmire gondolok: For i := -5 to -1 do begin Series1.AddXY(i,(A_ertek/i),FloatToStr(i),clBlue); end; Series1.AddXY(0,-1000,"0",clBlue); Chart1.SeriesList[0]:=Series1; Series2.AddXY(0,1000,"0",clBlue); For i := 1 to 5 do begin Series2.AddXY(i,(A_ertek/i),FloatToStr(i),clBlue); end; Chart1.SeriesList[1]:=Series2; Nem vagyok benne biztos, hogy ezt lehet, de nincs mivel kipróbálni. Link to comment Share on other sites More sharing options...
wizard 0 Author Share Posted April 5, 2006 arpsoft! Köszi a tippet! Szerintem a 2 series alkalmazása nem csúnya megoldás. Most már legalább nem köti össze a 2 síknegyedet. Viszont ezt a sorodat nem vágom: Series1.AddXY(0,-1000,'0',clBlue); Mondjuk a fordító sem vágta az elején, de csak annyi volt a hiba, hogy "0"-t írtál '0' helyett. De most jön a probléma: Olyan a függvény képe, mintha a -1-et és a -1000-et összekötné egy egyenes vonallal. Beállítottam a grafikont, hogy -10 - 10-ig legyenek az értékek. A Series1.AddXY(0,-1000,'0',clBlue);-be -1000 helyett -11-et írtam. Így még durvábban elõjön a hiba. Nem görbe a -1 és a -11 összekötése, hanem egyenes. Ennél jobban kéne simulnia az Y tengelyhez. + a 2 series alkalmazásánál eltüntek oldalról az adatok. (Helyettük csak ennyi van: series1, series2.) Ezek mutatták, hogy adott x értékhez milyen y értékek tartoznak. Excelnél ezt adatsornak hívjuk. Itt nem tudom. Szerintem a ciklussal van a gáz. Ha meg tudom oldani, hogy mondjuk 0.0001-tol induljon, akkor elvileg mûködnie kéne. Esetleg, ha számlálós ciklus helyett dinamikussal próbálkoznék? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now