Recommandations de couleur et d'épaisseur de ligne pour les tracés de ligne


31

Beaucoup de choses ont été écrites sur les choix de couleurs adaptés aux daltoniens pour les cartes, les polygones et les régions ombrées en général (voir par exemple http://colorbrewer2.org ). Je n'ai pas pu trouver de recommandations pour les couleurs de ligne et l'épaisseur de ligne variable pour les graphiques de ligne. Les objectifs sont:

  1. distinguer facilement les lignes même lorsqu'elles s'entrelacent
  2. les lignes sont faciles à distinguer par les personnes présentant les formes les plus courantes de daltonisme
  3. (moins importantes) les lignes sont faciles à imprimer (voir Color Brewer ci-dessus)

Dans le contexte des lignes d'échelle noires et grises, j'ai trouvé très efficace d'avoir des lignes noires minces et des lignes d'échelle grises plus épaisses. J'apprécierais des recommandations spécifiques qui incluent des couleurs variables, un degré d'échelle de gris et une épaisseur de ligne. Je n'aime pas autant les différents types de lignes (solide / pointillé / pointillé) mais je pourrais en parler.

Il serait préférable d'avoir des recommandations pour jusqu'à 10 courbes sur un graphique. Encore mieux serait de faire comme Color Brewer: autoriser les recommandations pour m lignes à ne pas être un sous-ensemble de recommandations pour n lignes où n> m, et faire varier m de 1 à 10.

Veuillez noter : j'apprécierais également des conseils qui ne traitent que la partie de coloration des lignes de la question.

Certains praticiens ajoutent des symboles aux lignes tous les quelques centimètres pour mieux distinguer les différentes classes. Je ne suis pas tellement en faveur de cela qui nécessite plus d'une fonctionnalité (par exemple, couleur + type de symbole) pour distinguer les classes, et je voudrais parfois réserver des symboles pour dénoter des informations différentes.

En l'absence d'autres indications, je propose d'utiliser les mêmes couleurs recommandées pour les polygones dans colorbrewer2.org pour les lignes, et de multiplier la largeur de ligne par 2,5 pour les lignes dessinées avec des couleurs moins lumineuses / denses. Je crée une fonction R qui configure cela. En plus des couleurs du brasseur de couleurs, je pense que je ferai des 2 premières couleurs un noir solide (mince) et une échelle de gris (épaisse) bien que l'on puisse dire qu'elles devraient être un solide noir uni et un bleu mince.

Les fonctions R se trouvent sur http://biostat.mc.vanderbilt.edu/wiki/pub/Main/RConfiguration/Rprofile . Une fois que vous avez défini la fonction, colBrewvous pouvez voir comment les paramètres fonctionnent en tapant

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

Une fonction latticeSetest également fournie pour définir latticeles paramètres graphiques sur les nouveaux paramètres. Les améliorations des algorithmes sont les bienvenues.

À explorer : dichromatpackage R : http://cran.r-project.org/web/packages/dichromat/


2
J'aurais pensé qu'un nombre limité de types de ligne serait très utile. Une autre option qui ne semble pas encore être mentionnée, est l'utilisation de marqueurs ponctuels pour les mesures individuelles, par exemple, les croix, les zéros, les astérisques, etc.
Robert Jones

1
Pour moi, les marqueurs de points ne sont pas pleinement efficaces lorsque les courbes s'entrelacent. Mais j'ai vu plusieurs exemples où ils fonctionnent très bien.
Frank Harrell

Réponses:


21

J'essaierai d'être provocateur ici et je me demanderai si l'absence de telles lignes directrices se produit parce qu'il s'agit d'un problème presque insoluble. Les gens dans des domaines très différents semblent être d'accord pour parler souvent de «parcelles de spaghetti» et des problèmes qu'ils posent pour distinguer les différentes séries.

Concrètement, une masse de lignes pour plusieurs séries chronologiques individuelles peut véhiculer collectivement des modèles généraux et parfois des séries individuelles qui diffèrent de ces modèles.

La question, cependant, je pense être de distinguer toutes les séries chronologiques individuelles lorsqu'elles ont des identités qui vous intéressent.

Si vous avez dit 2 ou 3 séries, distinguer les séries n'est généralement pas trop difficile, et j'aurais tendance à utiliser des lignes pleines en deux ou trois en rouge, bleu ou noir. J'ai également joué avec l'orange et le bleu utilisés par Hastie et ses amis (voir la réponse de @ user31264).

En modifiant le motif de ligne (solide, tiret, pointillé, etc.), je n'ai trouvé qu'une valeur limitée. Les lignes pointillées ont tendance à être effacées physiquement et mentalement et les combinaisons plus subtiles de points et de tirets sont tout simplement trop subtiles (c'est-à-dire légères) en contraste pour réussir en pratique.

Je dirais que le problème mord bien avant que vous ayez 10 séries. À moins qu'elles ne soient très différentes, environ 5 séries peuvent être trop difficiles à distinguer. La psychologie courante semble être que les gens comprennent parfaitement le principe selon lequel différentes séries sont indiquées par différentes couleurs et / ou symbolisme, mais n'ont pas l'envie de travailler dur pour tracer les lignes individuelles et essayer de tenir une histoire sur leurs similitudes et leurs différences dans la tête. . Une partie de cela découle souvent de l'utilisation d'une légende (ou clé). C'est controversé, mais j'essaierais d'étiqueter différentes séries sur le graphique autant que possible. Ma devise ici est "Perdez la légende, ou tuez la clé, si vous le pouvez".

Je suis devenu plus sensible à une approche différente de l'affichage de plusieurs séries chronologiques, dans laquelle toutes les différentes séries temporelles sont affichées à plusieurs reprises dans plusieurs panneaux, mais une différente est mise en évidence dans chacun. C'est une fusion d'une vieille idée (a) de petits multiples (comme Edward Tufte les appelle) et d'une autre vieille idée (b) mettant en évidence une série d'intérêt particulier. À son tour, ce n'est peut-être qu'une autre vieille idée retrouvée, mais jusqu'à présent, je ne peux trouver que des références récentes. Plus dans ce fil sur Statalist .

En termes de couleurs, je suis optimiste quant à l'utilisation de gris pour des séries temporelles qui servent de toile de fond à tout ce qui est souligné. Cela semble cohérent avec la plupart des revues qui méritent d'être publiées.

Voici une expérience. Les données sont les rendements en grains de 17 parcelles sur les champs Broadbalk à Rothamsted 1852-1925 et proviennent d'Andrews, DF et Herzberg, AM (Eds) 1985. Données: Une collection de problèmes provenant de nombreux domaines pour l'étudiant et le chercheur . New York: Springer, tableau 5.1 et téléchargeable à partir de divers endroits (par exemple, entrez la description du lien ici . (Détail: les données y sont fournies en blocs de 4 lignes pour chaque année; les troisième et quatrième lignes sont pour le rendement en paille, non tracées ici. La les identificateurs de tracé ne sont pas explicites dans ce tableau.)

Je n'ai aucune expertise spécifique sur ce type de données; Je voulais juste une série temporelle multiple qui ne pouvait pas (facilement) être rejetée comme étant trivialement petite en termes de longueur de série ou de nombre de panneaux. (Si vous avez des centaines, des milliers, ... de panels, cette approche ne peut pas vraiment aider beaucoup.) Ce que j'imagine, c'est qu'un analyste de données, peut-être en parlant à un expert en la matière, pourrait identifier une variété de comportements inhabituels ici et obtenir ainsi des idées et des informations.

entrez la description de l'image ici

De toute évidence, cette recette pourrait être utilisée pour de nombreux autres types de graphiques (par exemple, les diagrammes de dispersion ou les histogrammes avec chaque sous-ensemble mis en évidence à tour de rôle); ainsi que la commande de panneaux selon une mesure ou un critère intéressant ou utile (par exemple, par la médiane ou le 90e centile ou l'écart-type); et pour les résultats du modèle ainsi que les données brutes.


2
Je suis très impressionné par le sous-ensemble. Pourriez-vous inclure des exemples d'images de sortie directement dans votre message? Je suis curieux de savoir comment cela fonctionne car le nombre de lignes varie, mais c'est certainement la solution la plus satisfaisante que j'ai vue pour ~ 10 lignes
Silverfish

@Silverfish Merci pour vos encouragements. Une expérience a maintenant été ajoutée.
Nick Cox

1
Nick, je suis tout à fait d'accord avec "perdre l'étiquette" - minimiser les légendes distantes - et avec l'utilisation de la mise en évidence d'une courbe à la fois, en laissant les autres s'assombrir comme vous l'avez fait [vous pouvez être presque aussi efficace en utilisant du noir uni pour la courbe en surbrillance] . Je pense que c'est une excellente idée pour les présentations, mais ce n'est pas aussi optimal pour publier un article en raison de l'espace limité.
Frank Harrell

Peut-être que les graphiques interactifs deviendront bientôt plus un standard dans la publication et nous pourrons survoler les lignes dans les graphiques et obtenir plus d'informations (ayez la ligne entière en surbrillance ou affichez une info-bulle pour vous donner plus d'informations, etc.).
bdeonovic

1
@Frank Harrell La question des morsures d'espace (1) si les panneaux graphiques individuels deviennent trop petits pour être lisibles, auquel cas les mérites de la conception sont douteux; (2) si les revues ou les éditeurs de livres ne peuvent pas être persuadés d'attribuer plus d'espace pour un chiffre plus grand que la normale si cela en vaut la peine. (Peut-être que vous aviez d'autres points en tête.)
Nick Cox

14

Aux questions 2 et 3, vous avez répondu vous-même - les palettes de couleur des brasseurs conviennent. La question difficile est 1, mais comme Nick, je crains qu'elle ne soit basée sur un faux espoir. La couleur des lignes n'est pas ce qui permet de distinguer facilement les lignes, elle est basée sur la continuité et le caractère tortueux des lignes. Il existe donc des choix basés sur la conception, autres que la couleur ou le motif de tiret des lignes, qui aideront à rendre le tracé plus facile à interpréter.

Je vais voler un des diagrammes de Frank montrant la flexibilité des splines pour approximer de nombreuses fonctions différentes sur un domaine limité à titre d'exemple.

#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)

Maintenant, cela produit un désordre assez emmêlé de 20 lignes, un défi difficile à visualiser.

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

Mess of Lines

Voici la même parcelle en petits multiples, à la même taille, en utilisant des panneaux enveloppés. Il est légèrement plus difficile de faire des comparaisons entre les panneaux, mais même dans l'espace réduit, il est beaucoup plus facile de visualiser la forme des lignes.

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

Tous les 20 panneaux

Un point que Stephen Kosslyn fait valoir dans ses livres est que ce n'est pas le nombre de lignes différentes qui complique l'intrigue, c'est le nombre de types de formes différents que les lignes peuvent prendre. Si 20 panneaux finissent par être trop petits, vous pouvez fréquemment réduire l'ensemble à des trajectoires similaires à placer dans le même panneau. Il est encore difficile de distinguer les lignes à l'intérieur des panneaux, par définition, elles seront proches les unes des autres et se chevaucheront fréquemment, mais cela réduit considérablement la complexité de la comparaison entre les panneaux. Ici, j'ai arbitrairement réduit les 20 lignes en 4 groupes distincts. Cela a l'avantage supplémentaire que l'étiquetage direct des lignes est plus simple, il y a plus d'espace dans les panneaux.

###############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

Panneaux réduits

Il y a une phrase générale qui s'applique à la situation, si vous vous concentrez sur tout, vous vous concentrez sur rien . Dans le cas de dix lignes seulement, vous pouvez (10*9)/2=45comparer des paires de lignes. Nous ne sommes probablement pas intéressés par les 45 comparaisons dans la plupart des circonstances, nous voulons soit comparer des lignes spécifiques entre elles, soit comparer une ligne à la distribution des autres. La réponse de Nick montre bien ce dernier. Dessiner les lignes d'arrière-plan minces, de couleur claire et semi-transparentes, puis dessiner la ligne de premier plan dans n'importe quelle couleur vive et plus épaisse sera suffisant. (Aussi pour l'appareil, assurez-vous de tracer la ligne de premier plan au-dessus des autres lignes!)

Il est beaucoup plus difficile de créer une superposition où chaque ligne individuelle peut être facilement distinguée dans l'enchevêtrement. Une manière de réaliser la différenciation entre le premier plan et l'arrière-plan en cartographie est l'utilisation des ombres (voir cet article de Dan Carr pour un bon exemple). Cela n'augmentera pas jusqu'à 10 lignes, mais peut aider pour 2 ou 3 lignes. Voici un exemple pour les trajectoires du panneau 1 utilisant Excel!

Excel Shadow

Il y a d'autres points à faire, tels que les lignes gris clair peuvent être trompeuses si vous avez des trajectoires qui ne sont pas lisses. Par exemple, vous pourriez avoir deux trajectoires en forme de X, ou deux en forme d'un côté droit vers le haut et d'un côté V. En les dessinant de la même couleur, vous ne pourriez pas tracer les lignes, et c'est pourquoi certains suggèrent tracer des tracés de coordonnées parallèles en utilisant des lignes lisses ou en agitant / décalant les points ( Graham et Kennedy, 2003 ; Dang et al., 2010 ).

Les conseils de conception peuvent donc changer en fonction de l'objectif final et de la nature des données. Mais lorsque des comparaisons bivariées entre les trajectoires sont intéressantes, je pense que le regroupement de trajectoires similaires et l'utilisation de petits multiples rendent les graphiques beaucoup plus faciles à interpréter dans une grande variété de circonstances. Je pense que cela est généralement plus productif que toute combinaison de couleurs / tirets de ligne dans des tracés compliqués. Les tracés de panneaux individuels dans de nombreux articles sont beaucoup plus grands qu'ils ne devraient l'être, et la division en 4 panneaux est généralement possible dans les contraintes de page sans trop de pertes.


3
Andy c'est merveilleux. Je pense que pour cet exemple particulier de courbe spline, il serait tout aussi efficace, voire plus efficace, d'attribuer 5 couleurs aux 20 lignes afin que les courbes les plus proches les unes des autres se voient attribuer des couleurs différentes. Il n'y a pas de métrique de distance qui fonctionnera toujours, mais il y a généralement une métrique qui fonctionne pour une situation donnée. Comme vous l'avez dit, tout cela dépend de la finesse et de la tortuosité.
Frank Harrell

5

Tiré de "The Elements of Statistical Learning" de Trevor Hastie et al. :

"Notre première édition était hostile aux lecteurs daltoniens; en particulier, nous avions tendance à privilégier les contrastes rouge / vert qui sont particulièrement gênants. Nous avons modifié la palette de couleurs dans cette édition dans une large mesure, remplaçant ce qui précède par un contraste orange / bleu. "

Vous voudrez peut-être regarder leurs graphiques.

Vous pouvez également utiliser des lignes pointillées, pointillées, etc.


4

J'ai vu très peu d'attention accordée à «l'épaisseur de ligne» en ce qui concerne la visualisation des données. Peut-être que la capacité de discerner différentes épaisseurs de ligne n'est pas aussi variable que la capacité de discerner la couleur.

Quelques ressources:

  1. Hadley Wickham (2009), ggplot: Élégants graphiques pour l'analyse des données , Springer; a une page Web de support
  2. 8 ressources de livre suggérées sur la visualisation des données: http://www.tableausoftware.com/about/blog/2013/7/list-books-about-data-visualisation-24182

Quelques cours:

  1. Conférence graphique dans le cours d' introduction à la biostatistique de Thomas Lumley
  2. Cours d'études supérieures de Ross Ihaka sur l'analyse des données informatiques et les graphiques
  3. Cours de premier cycle de Ross Ihaka sur la visualisation de l'information
  4. Cours de premier cycle de Deborah Nolan Concepts in Computing with Data
  5. Cours de visualisation de données de Hadley Wickham

7
C'est une excellente liste de ressources. Cependant, y a-t-il des recommandations spécifiques dont vous avez connaissance - à partir d'une ou plusieurs d'entre elles - qui se rapportent à la question (épaisseur des lignes, avec des lignes colorées, où il peut y avoir beaucoup de lignes), que vous pourriez brièvement mentionner?
Glen_b -Reinstate Monica

J'ai pris la liberté de formater votre message. Je pense que cela permet de voir plus facilement la structure. Si vous ne l'aimez pas, faites-le revenir avec mes excuses.
gung - Rétablir Monica

2

Bien que je convienne qu'il n'y a pas de solution unique au problème, j'utilise la recommandation de ce blog:

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

Les articles sur la couleur abordent les problèmes de daltonisme et d'impression à l'échelle des gris et donnent un exemple d'échelle de couleur qui résout ces deux problèmes.

Dans les mêmes articles, on analyse également les échelles de couleurs continues, que beaucoup utilisent pour les tracés de chaleur, etc. Il est recommandé de ne pas utiliser l'arc-en-ciel, en raison de certaines transitions nettes (comme la zone jaune, beaucoup plus petite que le rouge). Au lieu de cela, il est possible de faire des transitions entre d'autres paires de couleurs.

Un bon ensemble de couleurs à cet effet est le bleu et l'orange (un classique!). Vous pouvez faire un test en appliquant des filtres daltoniens et gris et voir si vous pouvez toujours remarquer la différence.

Pour l'épaisseur des lignes, certains des problèmes du blog mentionnés précédemment traitent de ce point. Les lignes, si vous en avez plusieurs, doivent avoir la même épaisseur, c'est-à-dire "fines". Utilisez des lignes épaisses uniquement si vous souhaitez attirer l'attention sur cet objet.


1
Je ne suis pas entièrement d'accord avec "Utiliser uniquement des lignes épaisses ...". Des lignes épaisses en gris clair peuvent être très efficaces dans de nombreux cas.
Frank Harrell

1
Ça peut être sûrement. Je voulais juste dire que si vous utilisez un style accrocheur, il devrait être utilisé avec un but.
chuse
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.