Ich entwerfe ein Diagramm für eine Website mit Highcharts . Dieses Diagramm enthält viele Ausbruchskurven (im Grunde kumulative Krankheitsinzidenz im Laufe der Zeit). Der Zweck dieser speziellen Grafik besteht darin, mehrere Kurven schnell und einfach mit der aktuellen Situation eines Beamten des öffentlichen Gesundheitswesens vergleichen zu können (die „Punktschätzung“).
Jede Kurve hat eine Punktzahl (zwischen 0 und 100), die angibt, wie ähnlich sie der Punktschätzung ist. Ich möchte die Top-X-Bewertungskurven anzeigen und sie entsprechend ihrer Bewertung einfärben.
Bei zwei Dingen kann ich mich schwer entscheiden:
Dinge, die ich versucht habe:
Verwenden von ColorBrewer zum Auswählen von Farben (dunklere Farbe → höhere Punktzahl):
Machen Sie dickere Linien, um höhere Punktzahlen anzuzeigen:
Keine dieser Optionen ist jedoch besonders gut, da sie die Zeilen nicht entsprechend der Partitur anpassen. Stattdessen werden die Linien kategorisch eingefärbt. Wenn die Punktzahl der höchsten Wertungslinie 100 und die nächsthöchste Wertungslinie 10 ist, unterscheiden sich die Farben nicht um 1/10, wenn dies sinnvoll ist.
Dies führte dazu, dass ich versuchte, Graustufenlinien auf einer linearen Skala anzupassen (z. B. ist eine Punktzahl von 100 vollständig schwarz (#000000) und eine Punktzahl von 50 ist #808080). In der Praxis sind Linien jedoch immer noch nicht wirklich leicht zu unterscheiden:
Hier ist es trotz der Tatsache, dass zwischen der besten und der schlechtesten Wertungslinie 19 Punkte Unterschied liegen, fast unmöglich, sie voneinander zu unterscheiden. Das Ändern der Linienstärke hilft einigen:
Aber wenn ich dann zu viele Kurven hinzufüge, wird es einfach zu unordentlich. Hier ist ein Beispiel (Linienstärke konstant):
Ich brauche natürlich eine Anleitung. Hinter diesem Problem muss Wissenschaft stecken. Wie soll ich diese Grafik gestalten?
Um dies technisch zu realisieren, bietet jedes anständige Plotprogramm Möglichkeiten, Farbachsen nach Belieben anzupassen. Soweit ich das beurteilen kann, ermöglicht Highcharts dies : Sie setzen Stopps auf Ihrer Farbachse mit Farben, die Sie definieren, und alles andere wird linear zwischen diesen Farben interpoliert. Auf diese Weise können Sie das volle Farbspektrum mit einer „exakten Abbildung“, wie Sie es nennen, nutzen.
Was die Wahl der Farbe angeht, gibt es Dutzende von Farbschemata, die genau für solche Zwecke zur Verfügung stehen, sehen Sie sich zB diese an . Ich kann Ihnen nicht sagen, was für Ihre Anwendung am besten ist, aber hier sind einige Gedanken:
Wie soll ich die Kurven einfärben, damit sie visuell unterscheidbar sind und die Punktzahlen darstellen?
Dies hängt wirklich von Ihren Daten ab und davon, was für die Zuschauer wichtig ist. Die zentrale Frage, die Sie sich stellen müssen, lautet: Sind alle relevanten Informationen gut ersichtlich?
Denken Sie auch daran, die Auswahl der Bereiche Ihrer Abszisse und Ordinate in Bezug auf die wichtigen Daten und nicht in Bezug auf alle Daten zu konzentrieren. Wenn beispielsweise die Außenlinie in Ihrem letzten Beispiel nicht wirklich relevant ist oder der Betrachter nur wissen muss, dass sie weit außerhalb der Skala liegt, sollten Sie Ihre Ordinate bei 250 k stoppen.
stops
. Weitere Informationen finden Sie in meiner Antwort.@Wrzlprmft hat einen hervorragenden Kommentar abgegeben, der wirklich geholfen hat. Seine Lösung hat mich zwar nicht zu 100 % dorthin gebracht, aber sie hat mich auf den richtigen Weg gebracht.
Diese Web-App ist eine Django-App (Python). Aus diesem Grund habe ich mich entschieden, eine Bibliothek namens spectra zu verwenden . Spectra hat die gleiche Funktionalität wie Highcharts stops
mit linearGradient
. Spectra erlaubt mir, dies zu tun:
>>> color_scale = spectra.scale(['red', 'blue']).domain([0, 100])
>>> color = color_scale(39.33)
>>> color.hexcode
'#9b0064'
Das ist genau das, was ich brauche.
Scott
Geoff
Geoff
DA01
DA01
Geoff