Empfehlungen zu Farbe und Liniendicke für Liniendiagramme

31

Es wurde viel über farbenblinde Farbauswahlmöglichkeiten für Karten, Polygone und schattierte Bereiche im Allgemeinen geschrieben (siehe zum Beispiel http://colorbrewer2.org ). Ich konnte keine Empfehlungen für Linienfarben und unterschiedliche Liniendicken für Liniendiagramme finden. Ziele sind:

  1. leicht zu unterscheiden Linien, auch wenn sie sich verflechten
  2. Linien sind von Personen mit den häufigsten Formen der Farbenblindheit leicht zu unterscheiden
  3. (weniger wichtige) Zeilen sind druckerfreundlich (siehe Color Brewer oben)

Im Zusammenhang mit schwarzen und grauen Linien habe ich es als sehr effektiv empfunden, dünne schwarze Linien und dickere graue Linien zu haben. Ich würde mich über konkrete Empfehlungen freuen, die unterschiedliche Farben, Graustufen und Strichstärken beinhalten. Ich mag unterschiedliche Linientypen (durchgezogen / gepunktet / gestrichelt) nicht so gern, aber ich könnte von dieser Meinung abweichen.

Es wäre vorzuziehen, Empfehlungen für bis zu 10 Kurven in einem Diagramm zu haben. Noch besser wäre es, wie Color Brewer zu tun: Empfehlungen für m Linien dürfen keine Teilmenge von Empfehlungen für n Linien sein, bei denen n> m ist, und m sollte zwischen 1 und 10 variieren.

Bitte beachten Sie : Ich würde mich auch über eine Anleitung freuen, die nur den linienfarbenen Teil der Frage behandelt.

Einige Praktiker fügen alle paar Zentimeter Symbole in die Linien ein, um die verschiedenen Klassen besser unterscheiden zu können. Ich bin nicht so sehr dafür, dass mehr als ein Merkmal (z. B. Farbe + Symboltyp) erforderlich ist, um die Klassen zu unterscheiden, und möchte manchmal Symbole reservieren, um unterschiedliche Informationen zu kennzeichnen.

In Ermangelung anderer Richtlinien schlage ich vor, für Linien die gleichen Farben zu verwenden, die für Polygone in colorbrewer2.org empfohlen werden, und die Linienbreite für Linien mit weniger hellen / dichten Farben mit 2,5 zu multiplizieren. Ich erstelle eine R-Funktion, die dies einrichtet. Zusätzlich zu den Colour Brewer-Farben, denke ich, werden die ersten beiden Farben einfarbig schwarz (dünn) und grau (dick) sein, obwohl man argumentieren könnte, dass sie dünn, einfarbig schwarz und dünn blau sein sollten.

R-Funktionen finden Sie unter http://biostat.mc.vanderbilt.edu/wiki/pub/Main/RConfiguration/Rprofile . Sobald Sie die Funktion definiert haben, können colBrewSie durch Eingabe sehen, wie die Einstellungen funktionieren

showcolBrew(number of line types)  # add grayscale=TRUE to use only grayscale

Es latticeSetgibt auch eine Funktion zum Einstellen der latticeGrafikparameter auf die neuen Einstellungen. Verbesserungen der Algorithmen sind zu begrüßen.

Zum Erkunden : R- dichromatPaket: http://cran.r-project.org/web/packages/dichromat/

Frank Harrell
quelle
2
Ich hätte gedacht, dass eine begrenzte Anzahl von Leitungstypen sehr hilfreich wäre. Eine weitere Option, die noch nicht erwähnt zu sein scheint, ist die Verwendung von Punktmarkierungen für einzelne Messungen, z. B. Kreuze, Nullen, Sternchen usw.
Robert Jones
1
Für mich sind Punktmarkierungen nicht vollständig wirksam, wenn sich Kurven miteinander verflechten. Aber ich habe einige Beispiele gesehen, bei denen sie sehr gut funktionieren.
Frank Harrell

Antworten:

21

Ich werde versuchen, hier provokativ zu sein und mich zu fragen, ob das Fehlen solcher Richtlinien vorliegt, weil dies ein nahezu unlösbares Problem ist. Menschen in ganz unterschiedlichen Bereichen scheinen sich darin einig zu sein, dass sie oft von "Spaghetti-Plots" und den Problemen sprechen, die sie bei der Unterscheidung verschiedener Serien aufwerfen.

Konkret kann eine Masse von Linien für mehrere einzelne Zeitreihen allgemeine Muster und manchmal einzelne Reihen, die von einem solchen Muster abweichen, gemeinsam übermitteln.

Die Frage ist jedoch, ob es darum geht, alle einzelnen Zeitreihen zu unterscheiden, wenn sie Identitäten haben, die Sie interessieren.

Wenn Sie 2 oder 3 Reihen sagen, ist die Unterscheidung von Reihen normalerweise nicht zu schwierig, und ich würde eher durchgezogene Linien in zwei oder drei von Rot, Blau oder Schwarz verwenden. Ich habe auch mit Orange und Blau gespielt, wie es von Hastie und Freunden verwendet wird (siehe Antwort von @ user31264).

Unterschiedliche Linienmuster (durchgezogen, gestrichelt, gepunktet usw.) habe ich nur von begrenztem Wert gefunden. Gepunktete Linien neigen dazu, physisch und mental ausgewaschen zu werden, und die subtileren Kombinationen von Punkten und Strichen sind im Gegensatz dazu zu subtil (was bedeutet, geringfügig), um in der Praxis erfolgreich zu sein.

Ich würde sagen, das Problem beißt lange bevor Sie 10 Serien haben. Wenn sie nicht sehr unterschiedlich sind, kann es zu viel Arbeit sein, Serien zu unterscheiden. Die gängige Psychologie scheint zu sein, dass Menschen das Prinzip, dass verschiedene Serien durch verschiedene Farben und / oder Symbole gekennzeichnet sind, sehr gut verstehen, aber nicht die Neigung haben, die einzelnen Linien genau zu verfolgen und zu versuchen, eine Geschichte über ihre Ähnlichkeiten und Unterschiede in ihren Köpfen festzuhalten . Ein Teil davon stammt oft aus der Verwendung einer Legende (oder eines Schlüssels). Es ist umstritten, aber ich würde versuchen, wo immer möglich, verschiedene Serien in der Grafik zu kennzeichnen. Mein Motto lautet hier "Verliere die Legende oder töte den Schlüssel, wenn du kannst".

Ich mag einen anderen Ansatz für die Darstellung mehrerer Zeitreihen, bei dem alle verschiedenen Zeitreihen wiederholt in mehreren Feldern angezeigt werden, in jedem jedoch ein anderer hervorgehoben wird. Das ist eine Fusion aus einer alten Idee (a) kleinen Multiples (wie Edward Tufte sie nennt) und einer anderen alten Idee (b), die eine Reihe von besonderem Interesse hervorhebt. Es mag wiederum nur eine weitere alte Idee sein, die wiederentdeckt wurde, aber bisher kann ich nur aktuelle Referenzen finden. Mehr in diesem Thread auf Statalist .

In Bezug auf Farben bin ich zuversichtlich, Graustufen für Zeitreihen zu verwenden, die den Hintergrund für alles darstellen, was hervorgehoben wird. Dies scheint mit den meisten Zeitschriften übereinzustimmen, in denen es sich zu veröffentlichen lohnt.

Hier ist ein Experiment. Die Daten sind Getreideerträge aus 17 Parzellen auf den Broadbalk Fields in Rothamsted (1852-1925) und stammen von Andrews, DF und Herzberg, AM (Hrsg.) 1985. Daten: Eine Sammlung von Problemen aus vielen Bereichen für Studenten und Forscher . New York: Springer, Tabelle 5.1 und von verschiedenen Stellen herunterladbar (z. B. Linkbeschreibung hier eingeben . (Detail: Die Daten dort kommen in Blöcken zu 4 Zeilen für jedes Jahr; die dritte und vierte Zeile sind für die Strohausbeute, hier nicht eingezeichnet Plotkennungen sind in dieser Tabelle nicht explizit.)

Ich habe keine besonderen Kenntnisse über diese Art von Daten. Ich wollte nur eine Reihe von Zeitreihen, die (leicht) nicht als trivial klein in Bezug auf die Länge der Reihe oder die Anzahl der Panels abgetan werden konnten. (Wenn Sie Hunderte, Tausende, ... von Panels haben, kann dieser Ansatz nicht wirklich viel helfen.) Ich stelle mir vor, dass ein Datenanalyst, der sich vielleicht mit einem Experten für Fachthemen unterhält, eine Vielzahl von gemeinsamen und ähnlichen Kriterien identifizieren könnte ungewöhnliche Verhaltensweisen hier und erhalten dadurch Einsichten und Informationen.

Bildbeschreibung hier eingeben

Offensichtlich könnte dieses Rezept für viele andere Arten von Darstellungen verwendet werden (z. B. Streudiagramme oder Histogramme, wobei jede Teilmenge der Reihe nach hervorgehoben wird); zusammen mit der Bestellung von Panels nach einem interessanten oder nützlichen Maß oder Kriterium (z. B. nach Median oder 90. Perzentil oder SD); und für Modellergebnisse sowie Rohdaten.

Nick Cox
quelle
2
Ich bin sehr beeindruckt von Subsetplot. Könnten Sie einige Beispiel-Ausgabebilder direkt in Ihren Beitrag einfügen? Ich bin gespannt, wie gut es funktioniert, da die Anzahl der Zeilen variiert, aber dies ist definitiv die befriedigendste Lösung, die ich für ~ 10 Zeilen gesehen habe
Silverfish
@ Silverfish Vielen Dank für die Ermutigung. Ein Experiment wurde hinzugefügt.
Nick Cox
1
Nick, ich bin voll und ganz einverstanden mit "Lose the Label" - Minimierung entfernter Legenden - und mit der Verwendung des Hervorhebens einer Kurve nach der anderen, wobei die anderen so gedimmt werden, wie Sie es getan haben. . Ich denke, dies ist eine großartige Idee für Präsentationen, aber aufgrund von Platzbeschränkungen nicht optimal für die Veröffentlichung einer Arbeit.
Frank Harrell
Möglicherweise werden interaktive Diagramme bald zu einem Standard beim Veröffentlichen, und wir können über Linien in Diagrammen fahren und mehr Informationen erhalten (die gesamte Linie wird hervorgehoben, oder es wird ein Tooltip angezeigt, der Ihnen weitere Informationen usw. gibt).
Bdeonovic
1
@Frank Harrell Die Frage des Raums beißt (1), wenn einzelne Diagrammfelder zu klein werden, um lesbar zu sein. In diesem Fall sind die Vorzüge des Designs zweifelhaft. (2) wenn Zeitschriften oder Bucheditoren nicht dazu gebracht werden können, mehr Platz für eine größere Figur als normal zuzuweisen, wenn es sinnvoll erscheint. (Vielleicht hatten Sie andere Punkte im Sinn.)
Nick Cox
14

Die Fragen 2 und 3 haben Sie selbst beantwortet - die Farbbrühpaletten sind geeignet. Die schwierige Frage ist 1, aber wie Nick fürchte ich, basiert sie auf einer falschen Hoffnung. Die Farbe der Linien ist nicht das, was eine einfache Unterscheidung zwischen den Linien ermöglicht. Sie basiert auf der Kontinuität und der Gewundenheit der Linien. Daher gibt es andere designbasierte Auswahlmöglichkeiten als die Farbe oder das Strichmuster der Linien, die die Interpretation des Diagramms erleichtern.

Ich werde eines von Franks Diagrammen stehlen, das die Flexibilität von Splines zeigt, um als Beispiel viele unterschiedlich geformte Funktionen über einen begrenzten Bereich zu approximieren.

#code adapted from http://biostat.mc.vanderbilt.edu/wiki/pub/Main/RmS/rms.pdf page 40
library(Hmisc)
x <- rcspline.eval(seq(0,1,.01), knots=seq(.05,.95,length=5), inclx=T)
xm <- x
xm[xm > .0106] <- NA
x <- seq(0,1,length=300)
nk <- 6
set.seed(15)
knots<-seq(.05,.95,length=nk)
xx<-rcspline.eval(x,knots=knots,inclx=T)
for(i in 1:(nk1)){
  xx[,i]<-(xx[,i]−min(xx[,i]))/
  (max(xx[,i])−min(xx[,i]))
for(i in 1:20){
  beta<-2runif(nk1)−1
  xbeta<-xx%∗%beta+2runif(1)−1
  xbeta<-(xbetamin(xbeta))/
         (max(xbeta)−min(xbeta))
  if (i==1){
  id <- i
  MyData <- data.frame(cbind(x,xbeta,id))
  }
  else {
          id <- i
          MyData <- rbind(MyData,cbind(x,xbeta,id))
       }
  }
}
MyData$id <- as.factor(MyData$id)

Jetzt entsteht ein ziemliches Durcheinander von 20 Zeilen, eine schwierige Herausforderung, die man sich vorstellen kann.

library(ggplot2)
p1 <- ggplot(data = MyData, aes(x = x, y = V2, group = id)) + geom_line()
p1

Durcheinander von Linien

Hier ist derselbe Plot in kleinen Vielfachen, bei gleicher Größe, unter Verwendung von umwickelten Paneelen. Es ist etwas schwieriger, Vergleiche zwischen Panels anzustellen, aber selbst im verkleinerten Raum ist es viel einfacher, die Form der Linien zu visualisieren.

p2 <- p1 + facet_wrap(~id) + scale_x_continuous(breaks=c(0.2,0.5,0.8))
p2

Alle 20 Panels

Ein Punkt, den Stephen Kosslyn in seinen Büchern hervorhebt, ist, dass es nicht darum geht, wie viele verschiedene Linien die Handlung komplizieren, sondern darum, wie viele verschiedene Arten von Formen die Linien annehmen können. Wenn 20 Panels zu klein sind, können Sie den Satz häufig auf ähnliche Flugbahnen reduzieren, um ihn im selben Panel zu platzieren. Es ist immer noch schwierig, zwischen den Linien innerhalb der Panels zu unterscheiden. Per Definition überlappen sie sich häufig, aber dies verringert die Komplexität, die beim Vergleichen der Panels entsteht, erheblich. Hier habe ich die 20 Zeilen willkürlich in 4 separate Gruppen eingeteilt. Dies hat den zusätzlichen Vorteil, dass die direkte Beschriftung von Linien einfacher ist und mehr Platz in den Panels vorhanden ist.

###############1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
newLevels <- c(1,1,2,2,2,2,2,1,1, 2, 3, 3, 3, 3, 2, 4, 1, 1, 2, 1)
MyData$idGroup <- factor(newLevels[MyData$id])
p3 <- ggplot(data = MyData, aes(x = x, y = V2, group = id)) + geom_line() + 
             facet_wrap(~idGroup)
p3

Reduzierte Panels

Es gibt einen allgemeinen Satz, der auf die Situation anwendbar ist, wenn Sie sich auf alles konzentrieren , konzentrieren Sie sich auf nichts . Bei nur zehn Zeilen können Sie (10*9)/2=45mögliche Zeilenpaare vergleichen. Wir sind wahrscheinlich in den meisten Fällen nicht an allen 45 Vergleichen interessiert. Wir sind entweder daran interessiert, bestimmte Zeilen miteinander zu vergleichen oder eine Zeile mit der Verteilung der übrigen zu vergleichen. Nicks Antwort zeigt das letztere gut. Es reicht aus, die Hintergrundlinien dünn, hell und halbtransparent zu zeichnen und dann die Vordergrundlinie in allen hellen und dickeren Farben zu zeichnen. (Achten Sie auch beim Gerät darauf, dass die Vordergrundlinie über den anderen Linien liegt!)

Es ist viel schwieriger, eine Überlagerung zu erstellen, bei der jede einzelne Linie im Gewirr leicht unterschieden werden kann. Eine Möglichkeit zur Unterscheidung zwischen Vordergrund und Hintergrund in der Kartografie ist die Verwendung von Schatten ( ein gutes Beispiel finden Sie in diesem Artikel von Dan Carr ). Dies wird nicht auf 10 Zeilen skaliert, kann jedoch für 2 oder 3 Zeilen hilfreich sein. Hier ist ein Beispiel für die Flugbahnen in Panel 1 mit Excel!

Excel-Schatten

Es gibt noch weitere Punkte zu beachten, z. B. können die hellgrauen Linien irreführend sein, wenn Sie Flugbahnen haben, die nicht glatt sind. ZB könnten Sie zwei Trajektorien in der Form eines X oder zwei in der Form einer rechten und einer umgedrehten V haben. Wenn Sie sie in derselben Farbe zeichnen, könnten Sie die Linien nicht verfolgen, und dies ist der Grund, warum einige vorschlagen Zeichnen paralleler Koordinatendiagramme unter Verwendung glatter Linien oder durch Zittern / Versetzen der Punkte ( Graham und Kennedy, 2003 ; Dang et al., 2010 ).

Die Gestaltungsempfehlung kann sich also je nach Endziel und Art der Daten ändern. Wenn es jedoch von Interesse ist, bivariate Vergleiche zwischen den Trajektorien anzustellen, denke ich, dass die Zusammenfassung ähnlicher Trajektorien und die Verwendung kleiner Multiplikatoren die Interpretation der Diagramme unter den unterschiedlichsten Umständen erheblich erleichtert. Dies ist meiner Meinung nach im Allgemeinen produktiver als jede Kombination von Farben / Strichen in komplizierten Plots. Einzelne Panel-Plots in vielen Artikeln sind viel größer als sie sein müssen, und die Aufteilung in 4 Panels ist in der Regel innerhalb von Seitenbeschränkungen ohne großen Verlust möglich.

Andy W
quelle
3
Andy, das ist wunderbar. Ich denke, dass es für dieses spezielle Beispiel für Spline-Kurven genauso effektiv oder sogar noch effektiver wäre, den 20 Linien 5 Farben zuzuweisen, damit Kurven, die näher beieinander liegen, unterschiedliche Farben zugewiesen werden. Es gibt keine Distanzmetrik, die immer funktioniert, aber es gibt normalerweise eine Metrik, die für eine bestimmte Situation funktioniert. Wie Sie sagten, hängt dies alles von Geschmeidigkeit und Gewundenheit ab.
Frank Harrell
5

Aus "Die Elemente des statistischen Lernens" von Trevor Hastie et al. :

"Unsere erste Ausgabe war für farbenblinde Leser unfreundlich. Insbesondere bevorzugten wir besonders störende Rot / Grün-Kontraste. Wir haben die Farbpalette in dieser Ausgabe weitgehend geändert und die oben genannten durch einen Orange / Blau-Kontrast ersetzt. "

Vielleicht möchten Sie sich ihre Grafiken ansehen.

Sie können auch gestrichelte, gepunktete usw. Linien verwenden.

user31264
quelle
4

Ich habe sehr wenig Aufmerksamkeit für die "Liniendicke" in Bezug auf die korrekte Datenvisualisierung gesehen. Vielleicht ist die Fähigkeit, unterschiedliche Strichstärken zu erkennen, nicht so unterschiedlich wie die Fähigkeit, Farben zu erkennen.

Einige Ressourcen:

  1. Hadley Wickham (2009), ggplot: Elegante Grafiken für die Datenanalyse , Springer; hat eine unterstützende Webseite
  2. 8 empfohlene Buchressourcen zur Datenvisualisierung: http://www.tableausoftware.com/about/blog/2013/7/list-books-about-data-visualisation-24182

Einige Kurse:

  1. Grafikvorlesung in Thomas Lumleys Einführungskurs für Biostatistik
  2. Ross Ihakas Abschlusskurs über Computerdatenanalyse und Grafik
  3. Ross Ihakas Grundkurs für Informationsvisualisierung
  4. Deborah Nolans Grundkurs Konzepte im Umgang mit Daten
  5. Hadley Wickhams Kurs zur Datenvisualisierung
bdeonovic
quelle
7
Das ist eine großartige Liste von Ressourcen. Gibt es jedoch spezifische Empfehlungen, die Sie kennen - von einem oder mehreren -, die sich auf die Frage beziehen (Linienstärke mit farbigen Linien, wo es möglicherweise viele Linien gibt), die Sie kurz erwähnen könnten?
Glen_b
Ich habe mir erlaubt, Ihren Beitrag zu formatieren. Ich denke, es macht es einfacher, die Struktur zu sehen. Wenn Sie es nicht mögen, rollen Sie es mit meiner Entschuldigung zurück.
gung - Wiedereinsetzung von Monica
2

Obwohl ich zustimme, dass es keine eindeutige Lösung für das Problem gibt, verwende ich die Empfehlung dieses Blogs:

http://blogs.nature.com/methagora/2013/07/data-visualization-points-of-view.html

Die Beiträge zu Farbe befassen sich mit den Themen Farbenblindheit und Graustufendruck und geben ein Beispiel für eine Farbskala, mit der diese beiden Probleme gelöst werden.

In den gleichen Artikeln wird auch die kontinuierliche Farbskala analysiert, die viele für Wärmebilder usw. verwenden. Es wird empfohlen, den Regenbogen wegen einiger scharfer Übergänge nicht zu verwenden (wie die gelbe Zone, die viel kleiner als die rote ist). Stattdessen können Übergänge zwischen anderen Farbpaaren vorgenommen werden.

Ein guter Farbsatz für diesen Zweck ist Blau und Orange (ein Klassiker!). Sie können einen Test durchführen, indem Sie Farbenblind- und Graufilter anwenden und prüfen, ob Sie den Unterschied noch bemerken.

In Bezug auf die Linienstärke befassen sich einige der zuvor erwähnten Probleme des Blogs mit diesem Punkt. Linien, wenn Sie viele haben, sollten die gleiche Dicke haben, das heißt "dünn". Verwenden Sie dicke Linien nur, wenn Sie auf dieses Objekt aufmerksam machen möchten.

chuse
quelle
1
Ich bin nicht ganz einverstanden mit "Nur dicke Linien verwenden ...". Dicke helle Graustufenlinien können in vielen Fällen sehr effektiv sein.
Frank Harrell
1
Es kann sicher sein. Ich meinte nur, wenn Sie einen auffälligen Stil verwenden, sollte er mit einem Zweck verwendet werden.
Chuse