Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#10

AW: Orientierungspunkte für die Y-Achse eines Diagramms berechnen

  Alt 14. Mai 2017, 07:49
Ich formuliere die Anforderung mal um. Der Maximalwert der Y-Achse soll abhängig vom Wertebereich der Y-Werte eine "schöne" Zahl sein. Ich vermute für Dich ist eine "schöne" Zahl: 1,2,3,5 bzw. 10,20,30,50 usw. Die Teilung der Y-Achse ergibt sich direkt aus dem Maximalwert.
1: 0,1/0,2/0,3/0,4/0,5/0,6/0,7/0,8/0,9/1,0
2: 0,2/../1,8/2,0
3: 1/2/3
5: 1/2/3/4/5
Oder so ähnlich. Das bleibt Dir überlassen.
Falls ich Dich da dann also richtig verstanden habe, geht es also lediglich darum den Maximalwert der Y-Werte in eine der vier Kategorien einzuordnen. Dazu würde ich Max(Y) zunächst normieren, also auf das Intervall [0..10[ herunter rechnen.

Delphi-Quellcode:
var
  NPotenz: Integer;
  YDiv: Double;
  YResult: Double;
begin
  NPotenz := trunc(Log10(YMax));
  YDiv:= IntPower(10, NPotenz);
  YNorm := trunc(YMax / YDiv);
end;
Jetzt mache ich die Fallunterscheidung für die "schöne" Zahl:
Delphi-Quellcode:
    if YNorm<=3
    then
      YResult := YNorm
    else
    if YNorm<=5
    then
      YResult := 5
    else
      YResult := 10;
Und nun muss ich lediglich die korrekte Potenz wieder herstellen

  YResult := YResult * YDiv; Vielleicht gibt es jetzt noch irgendwelche Rundungsprobleme usw. Aber das soll hier ja auch nur einen möglichen Lösungsweg skizzieren und keine fertige Lösung sein.
  Mit Zitat antworten Zitat