Ich arbeite an einem Softwareprojekt, bei dem ein Visualizer für Hochwassersimulationen erstellt wird. Im Rahmen dieses Projekts habe ich einen Wassergradienten erstellt, der die Wassertiefe an bestimmten Punkten anzeigt. Um festzulegen, welche Werte welche Farben darstellen, gehe ich die Daten durch und erhalte die minimalen und maximalen Werte, die auftreten, und verteile die Farben gleichmäßig nach dieser Skala.
Es gibt jedoch häufig Zeitpunkte in diesen Simulationen, an denen sich deutlich tieferes Wasser befindet als anderswo in der Simulation. Dies führt dazu, dass die meisten Punkte auf der Karte sehr ähnliche Farben haben. Dies ist nicht sehr informativ und macht die Bereiche, in denen das Wasser tiefer ist, sehr schwer zu erkennen.
Mein Ziel ist es, Tiefen, die häufiger auftreten, eine größere Farbpalette zu widmen. Wenn beispielsweise die Tiefen von 0 bis 12 reichen, die meisten Tiefen jedoch zwischen 1 und 2 liegen, möchte ich, dass innerhalb dieses Bereichs mehr Farbabweichungen auftreten als zwischen 11 und 12 oder 4 und 5. Es scheint, dass ich die Standardabweichung oder verwenden muss Etwas, das eine normale Verteilung beinhaltet, um dies zu tun, aber ich bin ein bisschen unklar, wie diese Dinge funktionieren und wie ich sie verwenden kann, um mein Ziel zu erreichen.
Jede Hilfe, die zur Verfügung gestellt werden kann, wird geschätzt. Vielen Dank.
quelle
Antworten:
Es hört sich so an, als ob Sie jede Farbe in Ihrer Palette ungefähr der gleichen Datenmenge zuordnen möchten.
Zur Veranschaulichung ist hier ein Histogramm eines Satzes von simulierten Tiefenmesswerten:110
Stellen Sie sich vor, dies wäre geglättet. Auf diese Weise könnte das Histogramm gleichmäßig in vertikale Segmente gleicher Fläche geschnitten werden, wobei so viele Schnitte verwendet werden, wie Sie möchten (ich habe in diesem Beispiel Teile verwendet ). Um die Flächen gleich zu halten, müssen die Schnitte dort dünn sein, wo sich das Histogramm befindet hoch - das heißt, wo es viele Daten gibt - und fett, wo das Histogramm niedrig ist - das heißt, wo es wenig Daten gibt.10
Eine Möglichkeit, das Schneiden einfach durchzuführen, besteht darin, die Gesamtdatenmenge ("kumulativer Anteil") gegen die Tiefe zu zeichnen. Schneiden Sie die vertikale Achse in gleichmäßige Intervalle und lesen Sie dann die Tiefen ab, in denen die Schnitte das Diagramm kreuzen: Verwenden Sie diese als Schnittpunkte für die Visualisierung der Tiefen.
Der Algorithmus zum Berechnen der Schnittpunkte aus den Daten sollte offensichtlich sein und ist in fast jeder Programmiersprache einfach zu schreiben: Sortieren Sie die Werte, teilen Sie die Liste in Gruppen von ungefähr gleicher Größe auf und wählen Sie Schnittpunkte, um den größten Wert in jeder Gruppe von der zu trennen kleinster Wert in der Gruppe, die ihm folgt.
quelle
Obwohl die Antwort von @ whuber genau das liefert, was Sie gefragt haben, möchte ich Sie darauf hinweisen, dass das, was Sie fragen, aus zwei Gründen möglicherweise nicht die beste Möglichkeit ist, Ihre Daten visuell darzustellen.
Sie kennen Ihre Anwendung natürlich am besten, daher kann ich nicht sagen, wie die richtige Antwort lautet. Im Folgenden finden Sie einige Alternativen, bei denen Daten verwendet werden, die von generiert wurden
Die Daten gehen von 0 bis 12,5 mit der folgenden Verteilung:
Ein 3-D-Oberflächendiagramm zeigt einige Gipfel, einen flachen Trog und einen kleinen Hügel:
Schauen wir uns nun einige 2D-Konturdiagramme an.
Gerade lineare Farbzuordnung, bei der die kleineren Funktionen fehlen, wie Sie bemerkt haben:
Wenn die Variation in den tiefen Bereichen unwichtig ist, ermöglicht das Abschneiden der Farbzuordnung mehr Farben für die kleineren Tiefen, während eine lineare Zuordnung in diesem Bereich beibehalten wird:
Zum Vergleich hier die rangfarbene Ansicht (sorry, dass meine Legende in Rangwerten statt in Tiefenwerten steht):
Ich bin mir nicht sicher, ob dies eine gute Darstellung für Ihre Bewerbung ist oder nicht. Das Detail im flachen Trog ist übertrieben. Eine Log - Farbzuordnung ist ähnlich und hat die Vorteile, die eine reale Interpretation und können über Datensätze, aber log ist noch nicht wahrnehmbare (Entschuldigungen wieder für die Legende) im Einklang stehen:
Schließlich ist hier ein Ansatz in eine etwas andere Richtung, der mit einem der oben genannten kombiniert werden kann, um die Auflösung zu erhöhen: eine mehrfarbige Farbzuordnung. In diesem Fall ist die Färbung linear und abgeschnitten:
Ein Ansatz, den meine Software nicht ohne Weiteres zulässt, ist die Verwendung einer mehrfarbigen, stückweisen linearen Farbzuordnung, die ich in einigen Höhenkarten gesehen habe. Zum Beispiel sind die niedrigen Höhen Grüns in Schritten von 50 Fuß, die mittleren Höhen sind Bräune in Schritten von 200 Fuß und die Höhen sind Grautöne in Schritten von 800 Fuß.
Fazit : Es ist besser, wenn das Gehirn des Betrachters mit Ihrem visuellen Wahrnehmungssystem arbeitet, als dagegen.
quelle