Moin!
Sagen wir ich hätte die Daten 5, 14, 67, 98, 145. In diesem Fall wäre es sinnvoll eine Skala mit den einträgen 0, 10, 20 ... 150 zu erzeugen. Habe ich nun aber die Daten 1450, 1672, 1898, 2756 wäre es sinnvoll eine Skala vielleicht von 1400 anfangen zu lassen und dann in hunderter Schritten bis 2900 zu gehen. Ich denke die Problematik ist klar.
Rein mathematisch wäre es ja kein Problem irgend eine Skala zu erzeugen, aber das Ding soll irgendwie menschlich gut lesbar sein (also möglichst glatte Werte mit vielen Nullen am Ende) und nicht aus 17,896 und 29,54423 bestehen.
Die Messwerte 0,045, 0,065, 0,032 und 0,048 sind aber kaum ohne Nachkommastellen einzutragen. :)
Aber zum Problem: Irgendeine Art von Flexibilität brauchst du zwingend. Wenn du Schrittweiten von 100 für die Skalenstriche als notwendig für eine Messwertreihe ermittelt hast (weil dir 117,356 als Schrittweite blöd erscheint), dann bedeutet das, dass nicht immer zwingend 15 Skalenstriche gesetzt werden können.
Mal so ganz zum allgemeinen Vorgehen:
Aus den Werten ist das Maximum und Minimum zu ermitteln. Das sind wahrscheinlich krumme Werte.
Die Differenz dieser Werte ergibt den mindesten Skalenumfang. Und anhand dieser Differenz und der möglichen/gewünschten Skalenteilung (10 bis 15 Stück) kann man schon ungefähr errechnen, wo die Skala denn tatsächlich beginnen und enden soll. Du benötigst aber an dieser Stelle irgendeine manuelle Festlegung, welche erlaubten Skalenschritte es denn nun sein sollen. Also beispielsweise "1, 2, 5", wobei das auch für 10er, 20er, 50er, 100er, 200er, 500er-Schritte stehen kann. Natürlich kannst du auch nur "1" festlegen und erhälst dann eben nur 10er, 100er, 1000er (oder 0,1er, 0,01er)-Schritte - das macht dann die Skalenteilung aber evtl. etwas unhandlicher.
Grundlage: Angestrebte Skalenstriche 10 bis 15 Stück, erlaubte Schrittweiten "1, 2, 5" in den entsprechenden Zehnerpotenzen.
Dein Zahlenbeispiel 1:
5, 14, 67, 98, 145 -> MIN: 5, MAX: 145, Diff: 140
Mit den minimalen und maximalen Skalenstrichen kommt als Schrittweite minimal und maximal 14 (140/10 Skalenstriche) bzw. 9,3333 (140/15 Skalenstriche) heraus. Das bedeutet: Die Schrittweite 10 liegt hier im Bereich des möglichen.
Der Minimalwert 5 wird abgerundet auf den nächsttieferen Wert, der Maximalwert 145 wird aufgerundet, jeweils auf einen Wert, der ein Vielfaches der Schrittweite 10 ist: 5 -> 0, 145 -> 150. Und schon liegen die Skalendaten fest:
Min: 0, Max: 150, Schrittweite 10, Skalenstriche: 15 (könnte übrigens sein, dass bei grenzwertigen Daten 16 Skalenstriche entstehen).
Dein Zahlenbeispiel 2:
1450, 1672, 1898, 2756 -> MIN: 1450, MAX: 2756, Diff: 1306
10 Skalenstriche: 130,6 Schrittweite, 15 Skalenstriche: 87,33 Schrittweite. Die Schrittweite wäre also "100", dadurch der Beginn bei 1400, das Ende bei 2800, die Zahl der Striche 14.
Mein Zahlenbeispiel:
0,045, 0,065, 0,032 und 0,048 -> MIN: 0,032, MAX: 0,065, Diff: 0,033
10 Skalenstriche: 0,0033 Schrittweite, 15 Skalenstriche: 0,0022 Schrittweite
Und schon gibts ein Problem, weil 0,005 als Schrittweite zu groß, 0,002 aber zu klein ist, um in 10 bis 15 Teilstrichen abgebildet zu werden. Entweder nimmt man weniger Teilstriche und 0,005 als Schrittweite (die Skala ginge dann von 0,030 bis 0,070 und hätte 8 Striche), oder man passt die möglichen Schrittweiten an auf 1, 2,5, 5, dann wäre die Schrittweite 0,025 möglich.
Tja, das ist eben das dumme an der Realität: Die Probleme halten sich selten an eine vorgegebene Lösung. :) Der Grund hier liegt darin, dass die gegebenen Parameter (10 - 15 Teilstriche, Schritte 1, 2 oder 5) nicht alle möglichen Wertemengen abdecken können. Wenn statt 15 Strichen aufgrund der Werte eher 16 Striche notwendig würden, müßte man eigentlich mit 8 Strichen und der doppelten Schrittweite arbeiten. 8 Striche sind aber nicht erlaubt, und auch die Schrittweiten sind nicht so dicht. Entweder man ist flexibler bei den Skalenstrichen, oder bei den Schrittweiten.
- Sven Rautenberg