Swing Semi logarithmischer Plot

tiek

Mitglied
Hallo!
Ich soll eine Art Funktionsplotter anpassen. Aktuell sind die Achsen linear, aber in Zukunft soll die y-Achse Logarithmisch sein (log10).
Mein Problem ist es den passenden y Punkt für einen gegebenen y Wert zu bestimmen.
Aktuell benutze ich folgenden code (lineare Version):
Java:
Dimension d = getSize(); // The current size of the graphical area
 
    int graYmax = (int) Math.round(d.height * SPACE_WITHOUT_TEXT);
    // entspr. minwert
    int graYmin = (int) Math.round(d.height * (1 - SPACE_FOR_TEXT));
 
 
 
    // use function to determin values y=m*x+n
    double m = (graYmax - graYmin) / (yMax_ - yMin_);
    double n = graYmax - m * yMax_;
    double graY = m * y + n;
 
    int intValue = (int) Math.round(graY);
    return intValue;

Beispiel Daten:
Das Panel ist 1000 * 800 pixel groß.Es gibt etwas Platrz um den Graphen herum und daher ist
graYmax = 40
graYmin = 720
Die Skalierung der y Achse geht von fast 0 bis 1000
yMax_ = 1000
yMin_ = 0.1
y = ist der Wert, von dem ich die y-Koordinate benötige

Der obige code ist für die lineare Version. Irgenwelche Vorschläge?
Vielen Dank schon mal.
 

tiek

Mitglied
Das kann so einfach nicht sein.
Wenn ich z.B 1000 als Y Wert habe, erhalte ich 3 als Ergebnis.
Meine Skala geht aber von 0..1000.

Was mir fehlt ist die Berechnung des y Punktes. Nicht die Berechnung von log10.
 

Michael...

Top Contributor
Was mir fehlt ist die Berechnung des y Punktes. Nicht die Berechnung von log10.
Das ist ja schlichter Dreisatz und die Lösung steht auch schon in Deinem Code:
Java:
    double m = (graYmax - graYmin) / (yMax_ - yMin_);
    double n = graYmax - m * yMax_;
    double graY = m * y + n;
Nur musst Du halt statt mit den linearen y Werten mit logarithmischen y Werten rechnen
yLogMax = 3 yLogMin = 0
 

Ähnliche Java Themen

Neue Themen


Oben