wizard Posted April 4, 2006 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!
arpsoft Posted April 4, 2006 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.
wizard Posted April 5, 2006 Author 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?
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