Рекомендації щодо кольорів та товщини ліній для графіків ліній


31

Багато написано про вибір кольорових сліпих кольорів для карт, полігонів та затінених регіонів загалом (див., Наприклад, http://colorbrewer2.org ). Мені не вдалося знайти рекомендації щодо кольорів ліній та різної товщини ліній для графіків ліній. Цілі:

  1. легко розрізнити лінії, навіть коли вони переплітаються
  2. лінії легко відрізнити окремими особами з найпоширенішими формами кольорової сліпоти
  3. (менш важливі) лінії зручні для друку (див. Кольоровий пивовар вище)

У контексті чорно-сірих ліній шкали, я вважав, що дуже ефективно мати тонкі чорні лінії та товсті лінії сірого масштабу. Буду вдячний за конкретні рекомендації, які включають різні кольори, ступінь сірого нальоту та товщину лінії. Мені не подобаються різні типи ліній (суцільні / пунктирні / штрихові), але можна говорити з цієї думки.

Краще мати рекомендації щодо до 10 кривих на одному графіку. Ще краще було б зробити так, як робить Color Brewer: дозволяйте рекомендаціям для m рядків не бути підмножиною рекомендацій для n рядків, де n> m, і змінювати m від 1 до 10.

Будь ласка, зверніть увагу : я також вдячний керівництву, яке стосується лише частини запитання про забарвлення рядка.

Деякі практикуючі додають символи до ліній кожні кілька сантиметрів, щоб краще розрізнити різні класи. Я не стільки на користь того, що для розрізнення класів потрібно більше однієї функції (наприклад, колір + тип символу), і інколи хотілося б резервувати символи для позначення різної інформації.

За відсутності інших вказівок я пропоную використовувати ті самі кольори, які рекомендовані для багатокутників у colorbrewer2.org для ліній, і помножити ширину лінії на 2,5 для ліній, намальованих менш яскравими / щільними кольорами. Я створюю функцію R, яка встановлює це. На додаток до кольорів пивних кольорів, я думаю, що я зроблю перші два кольори: суцільний чорний (тонкий) та сірий накид (густий), хоча можна стверджувати, що вони повинні бути тонкими суцільними чорними та тонкими синіми.

R функції можна знайти на веб-сайті http://biostat.mc.vanderbilt.edu/wiki/pub/Main/RConfiguration/Rprofile . Після визначення функції colBrewви зможете побачити, як працюють налаштування, ввівши

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

latticeSetТакож надається функція для встановлення latticeграфічних параметрів на нові настройки. Вдосконалення алгоритмів вітаються.

Для вивчення : dichromatпакет R : http://cran.r-project.org/web/packages/dichromat/


2
Я б подумав, що обмежена кількість типів рядків буде дуже корисною. Інший варіант, який, здається, ще не згадується, - це використання точкових маркерів для індивідуальних вимірювань, наприклад, хрестики, нулі, зірочки тощо.
Роберт Джонс

1
На мій погляд, точкові маркери недостатньо ефективні, коли криві переплітаються. Але я бачив кілька прикладів, коли вони дуже добре працюють.
Френк Харрелл

Відповіді:


21

Я спробую бути тут провокаційним і задумаюся, чи виникає відсутність таких настанов, оскільки це майже нерозв'язна проблема. Люди, що знаходяться в різних сферах, схожі на те, що часто говорять про "сюжетні сюжети" та проблеми, які вони ставлять у розрізненні різних серій.

Конкретно, маса рядків для декількох окремих часових рядів може спільно передавати загальні закономірності, а іноді й окремі серії, що відрізняються від будь-якої такої схеми.

Питання, однак, я маю на увазі про розрізнення всіх окремих часових рядів, коли вони мають особистість, яку ви хвилюєте.

Якщо ви скажете 2 або 3 серії, розрізнити серії зазвичай не надто складно, і я схильний використовувати суцільні лінії у двох-трьох червоних, синіх чи чорних. Я також грав із помаранчевим та синім кольорами, якими користуються Hastie та друзі (див. Відповідь від @ user31264).

Змінюючи шаблон лінії (суцільний, штриховий, пунктирний тощо), я виявив лише обмежене значення. Пунктирні лінії, як правило, стираються фізично і подумки, і більш тонкі комбінації крапок і тире є занадто тонкими (значущими, незначними) на відміну від того, щоб бути успішними на практиці.

Я б сказав, що проблема прикусується задовго до того, як у вас буде 10 серій. Якщо вони не дуже різні, 5 або більше серій може бути дуже схожим на важку роботу, щоб розрізнити. Загальна психологія, здається, полягає в тому, що люди розуміють принцип, що різні серії позначаються різними кольорами та символікою цілком добре, але їм не вистачає схильності до того, щоб наполегливо працювати, відслідковуючи окремі лінії і намагаючись провести розповідь про їх подібності та відмінності в головах. . Частина цього часто випливає з використання легенди (або ключа). Це суперечливо, але я б спробував позначити різні серії на графіку, де це можливо. Мій девіз тут - "Втратити легенду або вбити ключ, якщо зможете".

Я став прихильником іншого підходу до показу декількох часових рядів, в яких всі різні часові ряди відображаються неодноразово на декількох панелях, але в кожній з них виділяється інший. Це злиття однієї старої ідеї (а) маленьких кратних (як їх називає Едвард Туфте) та іншої старої ідеї (б), що підкреслює низку особливих інтересів. У свою чергу це може бути лише ще одна стара перетворена ідея, але поки що я можу знайти лише останні посилання. Більше в цій темі про Statalist .

Що стосується кольорів, то я позитивно ставлюсь до використання сірого для часових рядів, які є фоном для того, на чому наголошується. Це, здається, відповідає більшості журналів, які варто публікувати.

Ось один експеримент. Ці дані урожай зерна з 17 ділянок на Broadbalk полях на Rothamsted 1852-1925 і відбуваються з Andrews, DF і Герцберга, А. М. (ред) 1985. Data: колекція A завдання з багатьох областей для студентів і науковця . Нью-Йорк: Спрингер, Таблиця 5.1 та завантажувані з різних місць (наприклад, сюди введіть опис посилань . (Детально: Дані там надходять у блоки по 4 рядки щороку; третій та четвертий рядки - для урожайності соломи, тут не наводяться графіки. Ідентифікатори сюжету не явні в цій таблиці.)

Я не маю спеціальної експертизи щодо подібних даних; Я просто хотів декілька часових рядів, які не могли (легко) бути відхилені як тривіально малі за довжиною серії або кількістю панелей. (Якщо у вас сотні, тисячі ... панелей, такий підхід насправді не може допомогти багато.) Я думаю, що аналітик даних, можливо, розмовляючи з експертом з питань тематики, може визначити різноманітні загальні та нечасті поведінки тут і отримують розуміння та інформацію.

введіть тут опис зображення

Очевидно, цей рецепт можна було б використовувати для багатьох інших видів сюжетів (наприклад, розкидання графіків або гістограми з кожним підмножиною, виділеним по черзі); разом із замовленням панелей згідно з якоюсь цікавою чи корисною мірою чи критерієм (наприклад, за медіаною або 90-м перцентилем або SD); а також для результатів моделі, а також необроблених даних.


2
Мене дуже вразив subsetplot. Чи можете ви включити кілька вибіркових вихідних зображень безпосередньо у свою посаду? Мені цікаво, наскільки добре це працює, коли кількість рядків змінюється, але це, безумовно, найбільш задовольняюче рішення, яке я бачив за ~ 10 рядків
Silverfish

@Silverfish Дякую за заохочення. Зараз додано один експеримент.
Нік Кокс

1
Нік, я повністю згоден з "втратою мітки" - мінімізацією віддалених легенд - і з використанням підкреслення однієї кривої за часом, дозволяючи іншим тьмяним, як і ви [ви можете бути настільки ж ефективними, використовуючи суцільний чорний колір для виділеної кривої] . Я думаю, що це чудова ідея для презентацій, але не настільки оптимальна для публікації статті через обмеження місця.
Френк Харрелл

Можливо, взаємодіючі сюжети незабаром стануть більш стандартним у виданні, і ми зможемо навести курсор на рядки в сюжетах та отримати більше інформації (чи буде виділено весь рядок або покаже підказку, щоб дати вам більше інформації тощо).
бдеонович

1
@Frank Harrell Питання про укус простору (1), якщо окремі панелі графіків стають занадто малими для читання, і в цьому випадку переваги дизайну сумнівні; (2) якщо журнали чи редактори книг не можуть переконати призначити більше місця для більшої фігури, ніж звичайно, якщо це здається вартим. (Можливо, ви мали на увазі інші моменти.)
Нік Кокс

14

На питання 2 і 3 ви самі відповіли - підходять палітри кольорових пивоварок. Важке запитання - 1, але, як Нік, я боюся, що він заснований на помилковій надії. Колір ліній - це не те, що дозволяє легко розрізняти лінії, воно засноване на безперервності та настільки обертових лініях. Таким чином, існують варіанти, засновані на дизайні, крім кольорового або штрихового малюнка ліній, які допоможуть полегшити інтерпретацію сюжету.

Я вкраду одну з діаграм Франка, що показує гнучкість сплайнів для наближення багатьох функцій різної форми в обмеженій області в якості прикладу.

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

Тепер це створює досить заплутаний безлад у 20 рядків, який важко уявити собі.

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

Безлад ліній

Ось однаковий сюжет у невеликих кратних розмірах, однакових розмірів, за допомогою загорнутих панелей. Трохи складніше проводити порівняння між панелями, але навіть у зменшеному просторі візуалізувати форму ліній набагато простіше.

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

Усі 20 панелей

Один момент, який Стівен Кослін робить у своїх книгах, це те, що не стільки різних ліній ускладнюють сюжет, скільки скільки різних типів фігур можуть набувати лінії. Якщо 20 панелей виявляються занадто маленькими, ви часто можете зменшити набір до подібних траєкторій, щоб розмістити їх на одній панелі. Ще важко відрізнити лінії між панелями, за визначенням вони будуть розташовуватись поблизу і перекриватись часто, але це значно зменшує складність створення між панельними порівняннями. Тут я довільно скоротив 20 рядків на 4 окремих групи. Це має додаткову перевагу в тому, що пряме маркування ліній простіше, більше простору всередині панелей.

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

Скорочені панелі

Існує загальна фраза, застосовна до ситуації, якщо ви зосереджуєтесь на всьому, на чому ви зосереджуєтесь . У випадку, якщо є лише десять рядків, у вас є (10*9)/2=45можливі пари ліній для порівняння. Нас, мабуть, не цікавлять усі 45 порівнянь за більшості обставин, ми або зацікавлені у порівнянні конкретних ліній між собою, або порівнянні одного рядка з розподілом решти. Відповідь Ніка добре показує останнє. Намалювати лінії фону тонкими, світлими та напівпрозорими, а потім намалювати лінію переднього плану будь-якого яскравого кольору та товщі буде достатньо. (Також для пристрою обов’язково намалюйте лінію переднього плану поверх інших ліній!)

Набагато складніше створити нашарування, де кожну окрему лінію можна легко розрізнити в клубі. Один із способів здійснити диференціацію переднього плану в картографії - це використання тіней (див. Цей документ Дена Карра для хорошого прикладу). Це не буде масштабувати до 10 рядків, але може допомогти для 2 або 3 рядків. Ось приклад для траєкторій на панелі 1 за допомогою Excel!

Тінь Excel

Є ще деякі моменти, наприклад, світло-сірі лінії можуть вводити в оману, якщо у вас траєкторії, які не є рівними. Наприклад, у вас може бути дві траєкторії у формі X, або дві у формі правої сторони вгору і вниз головою V. Намалювавши їх однаковим кольором, ви б не змогли простежити лінії, і ось чому деякі припускають малювання паралельних ділянок координат, використовуючи плавні лінії або тремтіння / відключення точок ( Грем та Кеннеді, 2003 ; Dang та ін., 2010 ).

Тож поради щодо проектування можуть змінюватися залежно від кінцевої мети та характеру даних. Але при здійсненні біваріантних порівнянь між траєкторіями викликає інтерес, я вважаю, що групування подібних траєкторій та використання малих кратностей значно спрощує інтерпретацію сюжетів за самих різних обставин. Це я вважаю, як правило, більш продуктивним, ніж будь-яка комбінація кольорів / ліній дефісів буде у складних сюжетах. У багатьох статтях окремі сюжетні панелі набагато більше, ніж потрібно, і розділення на 4 панелі, як правило, можливе в межах обмежень сторінки без особливих втрат.


3
Енді це чудово. Я думаю, що для цього конкретного прикладу кривої сплайну було б настільки ж ефективно, або навіть ефективніше, призначити 5 кольорів 20 лініям, щоб криві, які ближче один до одного, присвоювали різні кольори. Немає жодної метрики відстані, яка б завжди працювала, але зазвичай є метрика, яка працює в даній ситуації. Як ви вже говорили, все це залежить від плавності та звивистості.
Френк Харрелл

5

З «Елементи статистичного навчання» Тревор Хасті та ін. :

"Наше перше видання було недоброзичливим до читачів кольорових слідів; зокрема, ми прагнули віддавати перевагу червоним / зеленим контрастам, що є особливо клопітким. Ми значно змінили палітру кольорів у цьому виданні, замінивши вищезазначене оранжево-синім контрастом. "

Ви можете подивитися їх графіки.

Ви також можете використовувати пунктирні, пунктирні і т.д. лінії.


4

Я дуже мало уваги приділяв "товщині ліній" щодо правильної візуалізації даних. Можливо, здатність розрізнити різну товщину лінії не така змінна, як здатність розрізнити колір.

Деякі ресурси:

  1. Хадлі Вікхем (2009), ggplot: Елегантна графіка для аналізу даних , Спрингер; має підтримуючу веб-сторінку
  2. 8 пропонованих книжкових ресурсів щодо візуалізації даних: http://www.tableausoftware.com/about/blog/2013/7/list-books-about-data-visualisation-24182

Деякі курси:

  1. Лекція з графіки у курсі « Вступні обчислення для біостатистики» Томаса Ломлі
  2. Аспірантура Росса Іхака з аналізу обчислювальних даних та графіки
  3. Бакалаврський курс Росса Іхака з інформаційної візуалізації
  4. Бакалаврський курс Дебори Нолан Концепції обчислення даних
  5. Курс візуалізації даних Хадлі Вікхема

7
Це чудовий перелік ресурсів. Однак чи існують якісь конкретні рекомендації, які вам відомі - з однієї чи декількох з них - які стосуються питання (товщина ліній, кольорових ліній, де може бути багато ліній), які ви могли б коротко згадати?
Glen_b -Встановіть Моніку

Я взяв на себе сміливість відформатувати вашу публікацію. Я думаю, що це полегшує бачення структури. Якщо вам це не подобається, поверніть його з вибаченнями.
gung - Відновіть Моніку

2

Хоча я згоден з тим, що не існує унікального рішення проблеми, я використовую рекомендацію цього блогу:

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

Повідомлення про кольорову проблему вирішують питання про кольорову сліпоту та сірий шрифт друку та наводять приклад кольорової гами, яка вирішує це обидва питання.

У цих же статтях проаналізовано також безперервні кольорові шкали, які багато використовує для нагрівання ділянок тощо. Рекомендується не використовувати веселку через деякі різкі переходи (наприклад, жовта зона, набагато менша, ніж червона). Натомість можна зробити переходи між іншими парами кольорів.

Гарний набір кольорів для цієї мети - синій і помаранчевий (класика!). Ви можете зробити тест, застосувавши кольорові та сірі фільтри та побачити, чи все ще можете помітити різницю.

Щодо товщини ліній, деякі питання блогу, згадані раніше, стосуються цього питання. Лінії, якщо їх багато, повинні мати однакову товщину, тобто "тонку". Використовуйте товсті лінії лише в тому випадку, якщо ви хочете звернути увагу на цей об’єкт.


1
Я не повністю згоден з "Використовувати лише товсті лінії ...". Густі світло-сірі лінії можуть бути дуже ефективними у багатьох випадках.
Френк Харрелл

1
Це може бути точно. Я просто мав на увазі, що якщо ви користуєтеся привабливим стилем, його слід використовувати з метою.
Чусе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.