Đề xuất màu sắc và độ dày đường cho sơ đồ đường


31

Phần lớn đã được viết về các lựa chọn màu thân thiện với người mù màu cho các bản đồ, đa giác và các khu vực bóng mờ nói chung (xem ví dụ http://colorbrewer2.org ). Tôi không thể tìm thấy các đề xuất cho màu đường và độ dày đường khác nhau cho biểu đồ đường. Mục tiêu là:

  1. dễ dàng phân biệt các dòng ngay cả khi chúng đan xen
  2. Các đường dễ phân biệt bởi các cá nhân có các dạng mù màu phổ biến nhất
  3. (ít quan trọng hơn) các dòng thân thiện với máy in (xem Color Brewer ở trên)

Trong bối cảnh các vạch màu đen và xám, tôi đã thấy rất hiệu quả khi có các vạch đen mỏng và các vạch vảy xám dày hơn. Tôi sẽ đánh giá cao các khuyến nghị cụ thể bao gồm màu sắc khác nhau, mức độ của thang màu xám và độ dày của đường. Tôi không thích các loại đường khác nhau (solid / rải rác / nét đứt) nhưng có thể được nói ra từ ý kiến ​​đó.

Tốt nhất là nên có các đề xuất cho tối đa 10 đường cong trên một biểu đồ. Thậm chí tốt hơn là làm như Color Brewer thực hiện: cho phép các đề xuất cho m dòng không phải là tập hợp con của các đề xuất cho n dòng trong đó n> m và thay đổi m từ 1 đến 10.

Xin lưu ý : Tôi cũng sẽ đánh giá cao hướng dẫn chỉ giải quyết phần tô màu của câu hỏi.

Một số học viên thêm các ký hiệu vào các dòng cứ sau vài centimet để phân biệt rõ hơn các lớp khác nhau. Tôi không ủng hộ nhiều đến mức yêu cầu nhiều hơn một tính năng (ví dụ: màu + loại biểu tượng) để phân biệt các lớp và đôi khi muốn dành các biểu tượng để biểu thị thông tin khác nhau.

Trong trường hợp không có hướng dẫn khác, tôi đề xuất sử dụng các màu tương tự được đề xuất cho đa giác trong colorbrewer2.org cho các dòng và để nhân chiều rộng của dòng lên 2,5 cho các dòng được vẽ với màu ít sáng hơn / đậm đặc hơn. Tôi đang tạo một hàm R thiết lập điều này. Ngoài các màu của nhà sản xuất màu, tôi nghĩ rằng tôi sẽ làm cho 2 màu đầu tiên là đen đặc (mỏng) và xám (dày) mặc dù người ta có thể lập luận rằng chúng nên có màu đen đặc và đen mỏng.

Các hàm R có thể được tìm thấy tại http://biostat.mc.vanderbilt.edu/wiki/pub/Main/RConfiguration/Rprofile . Khi bạn xác định chức năng, colBrewbạn có thể thấy cách cài đặt hoạt động bằng cách nhập

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

Một chức năng latticeSetcũng được đưa ra, để cài đặt latticecác tham số đồ họa cho các cài đặt mới. Cải tiến cho các thuật toán được hoan nghênh.

Để khám phá : dichromatGói R : http://cran.r-project.org/web/packages/dichromat/


2
Tôi đã nghĩ rằng một số loại hạn chế sẽ rất hữu ích. Một tùy chọn khác dường như chưa được đề cập đến, đó là sử dụng các điểm đánh dấu cho các phép đo riêng lẻ, ví dụ: chữ thập, số 0, dấu sao, v.v.
Robert Jones

1
Đối với tôi, điểm đánh dấu không hoàn toàn hiệu quả khi các đường cong đan xen. Nhưng tôi đã thấy một số ví dụ nơi họ làm việc rất tốt.
Frank Harrell

Câu trả lời:


21

Tôi sẽ cố gắng để được khiêu khích ở đây và tự hỏi liệu sự vắng mặt của các hướng dẫn như vậy phát sinh bởi vì đây là một vấn đề gần như không hòa tan. Mọi người trong các lĩnh vực khá khác nhau dường như thường đồng ý khi thường nói về "âm mưu spaghetti" và các vấn đề họ đặt ra khi phân biệt các loạt khác nhau.

Cụ thể, một loạt các dòng trong một vài chuỗi thời gian riêng lẻ có thể truyền tải chung các mẫu chung và đôi khi các chuỗi riêng lẻ khác với bất kỳ mẫu nào như vậy.

Tuy nhiên, câu hỏi tôi đặt ra là phân biệt tất cả các chuỗi thời gian riêng lẻ khi chúng có danh tính mà bạn quan tâm.

Nếu bạn đã nói 2 hoặc 3 loạt, việc phân biệt loạt thường không quá khó và tôi có xu hướng sử dụng các đường liền nét trong hai hoặc ba màu đỏ, xanh hoặc đen. Tôi cũng đã chơi với màu cam và màu xanh như được sử dụng bởi Hastie và bạn bè (xem câu trả lời từ @ user31264).

Thay đổi mô hình dòng (solid, dash, rải rác, v.v.) Tôi chỉ tìm thấy giá trị giới hạn. Các đường chấm chấm có xu hướng bị cuốn trôi về thể chất và tinh thần và sự kết hợp tinh tế hơn giữa các dấu chấm và dấu gạch ngang chỉ là quá tinh tế (ý nghĩa, nhẹ) trái ngược để thành công trong thực tế.

Tôi muốn nói vấn đề cắn rất lâu trước khi bạn có 10 loạt. Trừ khi chúng rất khác nhau, 5 hoặc nhiều chuỗi có thể quá giống như làm việc chăm chỉ để phân biệt. Tâm lý chung dường như là mọi người hiểu nguyên tắc rằng các chuỗi khác nhau được biểu thị bằng các màu sắc và biểu tượng khác nhau hoàn toàn tốt, nhưng thiếu thiên hướng làm việc chăm chỉ để truy tìm các dòng riêng lẻ và cố gắng giữ một câu chuyện về sự tương đồng và khác biệt của chúng trong đầu . Một phần của điều này thường bắt nguồn từ việc sử dụng một huyền thoại (hoặc chìa khóa). Nó gây tranh cãi, nhưng tôi sẽ cố gắng gắn nhãn loạt khác nhau trên biểu đồ bất cứ khi nào có thể. Phương châm của tôi ở đây là "Mất huyền thoại, hoặc giết chìa khóa, nếu bạn có thể".

Tôi đã trở nên suy nghĩ về một cách tiếp cận khác nhau để hiển thị nhiều chuỗi thời gian, trong đó tất cả các chuỗi thời gian khác nhau được hiển thị lặp đi lặp lại trong một số bảng, nhưng một cách khác nhau được làm nổi bật trong mỗi bảng. Đó là sự hợp nhất của một ý tưởng cũ (a) bội số nhỏ (như Edward Tufte gọi chúng) và một ý tưởng cũ khác (b) nêu bật một loạt các mối quan tâm đặc biệt. Đổi lại, nó có thể chỉ là một ý tưởng cũ được khám phá lại, nhưng cho đến nay tôi chỉ có thể tìm thấy các tài liệu tham khảo gần đây. Thêm trong chủ đề này trên Statalist .

Về màu sắc, tôi rất tích cực về việc sử dụng màu xám cho chuỗi thời gian làm nền cho bất cứ điều gì đang được nhấn mạnh. Điều đó dường như phù hợp với hầu hết các tạp chí có giá trị xuất bản.

Đây là một thử nghiệm. Dữ liệu là sản lượng hạt từ 17 lô trên Cánh đồng Broadbalk tại Rothamsted 1852-1925 và đến từ Andrew, DF và Herzberg, AM (Eds) 1985. Dữ liệu: Tập hợp các vấn đề từ nhiều lĩnh vực cho sinh viên và nhân viên nghiên cứu . New York: Springer, Bảng 5.1 và có thể tải xuống từ nhiều nơi khác nhau (ví dụ: nhập mô tả liên kết tại đây . (Chi tiết: Dữ liệu có các khối 4 dòng cho mỗi năm; dòng thứ ba và thứ tư dành cho sản lượng rơm, không được vẽ ở đây. định danh cốt truyện không rõ ràng trong bảng đó.)

Tôi không có chuyên môn cụ thể về loại dữ liệu này; Tôi chỉ muốn một chuỗi nhiều thời gian không thể (dễ dàng) bị loại bỏ vì tầm thường nhỏ về độ dài của loạt hoặc số lượng bảng. (Nếu bạn có hàng trăm, hàng ngàn, ... bảng điều khiển, cách tiếp cận này thực sự không giúp được gì nhiều.) Điều tôi đang tưởng tượng là một nhà phân tích dữ liệu, có lẽ đang nói chuyện với một chuyên gia về vấn đề, có thể xác định nhiều loại phổ biến và hành vi không phổ biến ở đây và nhận được thông tin chi tiết và thông tin qua đó.

nhập mô tả hình ảnh ở đây

Rõ ràng công thức này có thể được sử dụng cho nhiều loại ô khác (ví dụ như biểu đồ phân tán hoặc biểu đồ với mỗi tập hợp con được tô sáng lần lượt); cùng với các bảng đặt hàng theo một số biện pháp hoặc tiêu chí thú vị hoặc hữu ích (ví dụ: theo tỷ lệ phần trăm trung bình hoặc 90 hoặc SD); và cho kết quả mô hình cũng như dữ liệu thô.


2
Tôi rất ấn tượng bởi tập hợp con. Bạn có thể bao gồm một số hình ảnh đầu ra mẫu trực tiếp vào bài viết của bạn? Tôi tò mò nó hoạt động tốt như thế nào khi số lượng dòng khác nhau, nhưng đây chắc chắn là giải pháp thỏa mãn nhất tôi từng thấy cho ~ 10 dòng
Cá bạc

@Silverfish Cảm ơn sự khuyến khích. Một thí nghiệm bây giờ được thêm vào.
Nick Cox

1
Nick Tôi hoàn toàn đồng ý với "mất nhãn" - giảm thiểu các huyền thoại từ xa - và với việc sử dụng làm nổi bật một đường cong tại một thời điểm, để cho những người khác mờ đi như bạn đã làm [bạn có thể sử dụng màu đen đặc cho đường cong được tô sáng] . Tôi nghĩ rằng đây là một ý tưởng tuyệt vời cho các bài thuyết trình nhưng không quá tối ưu để xuất bản một bài báo vì giới hạn không gian.
Frank Harrell

Có thể các ô tương tác sẽ sớm trở thành một tiêu chuẩn trong xuất bản và chúng tôi sẽ có thể di chuột qua các dòng trong các ô và có thêm thông tin (có toàn bộ dòng được tô sáng hoặc hiển thị một chú giải công cụ để cung cấp cho bạn thêm thông tin, v.v.).
bdeonovic

1
@Frank Harrell Câu hỏi về vết cắn không gian (1) nếu các bảng biểu đồ riêng lẻ trở nên quá nhỏ để có thể đọc được, trong trường hợp đó, giá trị của thiết kế là không rõ ràng; (2) nếu các tạp chí hoặc biên tập sách không thể bị thuyết phục để gán nhiều không gian hơn cho một con số lớn hơn bình thường nếu nó có vẻ đáng giá. (Có lẽ bạn đã có những điểm khác trong tâm trí.)
Nick Cox

14

Câu hỏi 2 và 3 bạn tự trả lời - bảng màu bia phù hợp. Câu hỏi khó là 1, nhưng giống như Nick tôi sợ nó dựa trên một hy vọng sai lầm. Màu sắc của các đường không phải là thứ khiến người ta có thể phân biệt giữa các đường một cách dễ dàng, nó dựa trên tính liên tục và mức độ quanh co của các đường. Do đó, có các lựa chọn dựa trên thiết kế, ngoài màu sắc hoặc mẫu gạch ngang của các đường kẻ, sẽ giúp làm cho cốt truyện dễ diễn giải hơn.

Tôi sẽ đánh cắp một trong những sơ đồ của Frank cho thấy tính linh hoạt của các spline để xấp xỉ nhiều hàm có hình dạng khác nhau trên một miền giới hạn làm ví dụ.

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

Bây giờ điều này tạo ra một mớ hỗn độn gồm 20 dòng, một thách thức khó hình dung.

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

Sự lộn xộn của dòng

Đây là cùng một âm mưu trong bội số nhỏ, ở cùng kích thước, sử dụng các tấm bọc. Việc so sánh giữa các bảng sẽ hơi khó khăn hơn một chút, nhưng ngay cả trong không gian bị thu hẹp, việc hình dung hình dạng của các đường kẻ sẽ dễ dàng hơn nhiều.

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

Tất cả 20 bảng

Một điểm mà Stephen Kosslyn đưa ra trong các cuốn sách của mình là không có bao nhiêu dòng khác nhau làm cho cốt truyện trở nên phức tạp, đó là có bao nhiêu loại hình dạng khác nhau mà các dòng có thể thực hiện. Nếu 20 bảng kết thúc quá nhỏ, bạn có thể thường xuyên giảm tập hợp thành các quỹ đạo tương tự để đặt trong cùng một bảng. Vẫn khó phân biệt giữa các dòng trong bảng, theo định nghĩa, chúng sẽ ở gần nhau và chồng chéo thường xuyên, nhưng nó làm giảm sự phức tạp của việc thực hiện giữa các bảng so sánh khá nhiều. Ở đây tôi tự ý giảm 20 dòng thành 4 nhóm riêng biệt. Điều này có thêm lợi ích là việc ghi nhãn trực tiếp của các dòng đơn giản hơn, có nhiều không gian hơn trong các bảng.

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

Bảng điều khiển giảm

Có một cụm từ chung có thể áp dụng cho tình huống, nếu bạn tập trung vào tất cả mọi thứ bạn tập trung vào không có gì . Trong trường hợp chỉ có mười dòng, bạn có (10*9)/2=45thể có các cặp dòng để so sánh. Chúng tôi có thể không quan tâm đến tất cả 45 so sánh trong hầu hết các trường hợp, chúng tôi hoặc quan tâm đến việc so sánh các dòng cụ thể với nhau hoặc so sánh một dòng với phân phối phần còn lại. Câu trả lời của Nick cho thấy sau này độc đáo. Vẽ các đường nền mỏng, màu nhạt và bán trong suốt, sau đó vẽ đường nền trước bằng bất kỳ màu sáng và dày hơn sẽ là đủ. (Ngoài ra, đối với thiết bị, đảm bảo vẽ đường nền trước trên các đường khác!)

Thật khó khăn hơn nhiều để tạo ra một lớp trong đó mỗi dòng riêng lẻ có thể dễ dàng phân biệt trong mớ. Một cách để thực hiện phân biệt nền trước trong bản đồ là sử dụng bóng, (xem bài viết này của Dan Carr để biết ví dụ tốt). Điều này sẽ không mở rộng tối đa 10 dòng, nhưng có thể giúp cho 2 hoặc 3 dòng. Dưới đây là một ví dụ cho các quỹ đạo trong Bảng 1 bằng Excel!

Bóng Excel

Có những điểm khác để thực hiện, chẳng hạn như các đường màu xám nhạt có thể gây hiểu lầm nếu bạn có quỹ đạo không trơn tru. Ví dụ: bạn có thể có hai quỹ đạo có hình chữ X hoặc hai hình dạng của một bên phải lên và lộn ngược V. Vẽ chúng cùng màu bạn sẽ không thể theo dõi các đường kẻ, và đây là lý do tại sao một số gợi ý vẽ các ô tọa độ song song bằng cách sử dụng các đường thẳng hoặc jittering / off - thiết lập các điểm ( Graham và Kennedy, 2003 ; Dang et al., 2010 ).

Vì vậy, lời khuyên thiết kế có thể thay đổi tùy thuộc vào mục tiêu cuối cùng và bản chất của dữ liệu. Nhưng khi thực hiện so sánh hai biến giữa các quỹ đạo là điều đáng quan tâm, tôi nghĩ rằng việc phân cụm các quỹ đạo tương tự và sử dụng bội số nhỏ làm cho các ô dễ hiểu hơn trong nhiều tình huống. Điều này tôi cảm thấy thường có năng suất cao hơn bất kỳ sự kết hợp màu sắc / dấu gạch ngang nào sẽ ở các ô phức tạp. Các ô bảng điều khiển đơn trong nhiều bài viết lớn hơn nhiều so với mức cần thiết và việc chia thành 4 bảng thường có thể thực hiện được trong các ràng buộc của trang mà không mất nhiều.


3
Andy này thật tuyệt vời. Tôi nghĩ rằng đối với ví dụ đường cong spline cụ thể này sẽ hiệu quả hoặc thậm chí hiệu quả hơn, khi gán 5 màu cho 20 đường sao cho các đường cong gần nhau hơn được gán các màu khác nhau. Không có một số liệu khoảng cách nào sẽ luôn hoạt động nhưng thường có một số liệu hoạt động cho một tình huống nhất định. Như bạn đã nói tất cả điều này phụ thuộc vào sự trơn tru và quanh co.
Frank Harrell

5

Từ "Các yếu tố của học thống kê" của Trevor Hastie et al. :

"Phiên bản đầu tiên của chúng tôi không thân thiện với độc giả mù màu, đặc biệt, chúng tôi có xu hướng ủng hộ sự tương phản màu đỏ / xanh lá cây đặc biệt rắc rối. Chúng tôi đã thay đổi bảng màu trong phiên bản này ở mức độ lớn, thay thế màu trên bằng màu tương phản màu cam / xanh. "

Bạn có thể muốn nhìn vào biểu đồ của họ.

Bạn cũng có thể sử dụng đường đứt nét, chấm vv.


4

Tôi đã thấy rất ít chú ý đến "độ dày đường truyền" liên quan đến trực quan hóa dữ liệu thích hợp. Có lẽ khả năng phân biệt độ dày đường khác nhau không thay đổi như khả năng phân biệt màu sắc.

Một số tài nguyên:

  1. Hadley Wickham (2009), ggplot: Đồ họa thanh lịch để phân tích dữ liệu , Springer; có một hỗ trợ trang web
  2. 8 tài nguyên sách được đề xuất về trực quan hóa dữ liệu: http://www.tableausoftware.com/about/blog/2013/7/list-books-about-data-visualisation-24182

Một số khóa học:

  1. Bài giảng đồ họa trong Thomas Lumley's khóa học giới thiệu cho khóa học thống kê sinh học
  2. Ross Ihaka Khóa học sau đại học về phân tích dữ liệu tính toán và đồ họa
  3. Ross Ihaka Khóa học đại học về trực quan hóa thông tin
  4. Deborah Nolan Khóa học đại học Khái niệm về tính toán với dữ liệu
  5. Khóa học trực quan hóa dữ liệu của Hadley Wickham

7
Đó là một danh sách lớn các tài nguyên. Tuy nhiên, có bất kỳ khuyến nghị cụ thể nào bạn biết - từ một hoặc nhiều trong số chúng - liên quan đến câu hỏi (độ dày của dòng, với các dòng màu, nơi có thể có nhiều dòng), mà bạn có thể đề cập ngắn gọn?
Glen_b -Reinstate Monica

Tôi đã tự do định dạng bài viết của bạn. Tôi nghĩ rằng nó làm cho nó dễ dàng hơn để xem cấu trúc. Nếu bạn không thích nó, hãy quay lại với lời xin lỗi của tôi.
gung - Phục hồi Monica

2

Mặc dù tôi đồng ý rằng không có giải pháp duy nhất cho vấn đề này, tôi sử dụng đề xuất của blog này:

http://bloss.nature.com/methagora/2013/07/data-visualization-point-of-view.html

Các bài viết về màu sắc giải quyết các vấn đề mù màu và in thang màu xám và đưa ra một ví dụ về thang màu giải quyết cả hai vấn đề này.

Trong các bài viết tương tự cũng được phân tích các thang màu liên tục, mà nhiều người sử dụng cho các lô nhiệt và như vậy. Không nên sử dụng cầu vồng, vì một số chuyển tiếp sắc nét (như vùng màu vàng, nhỏ hơn nhiều so với màu đỏ). Thay vào đó, có thể thực hiện chuyển tiếp giữa các cặp màu khác.

Một bộ màu sắc tốt cho mục đích này là màu xanh và màu cam (một kiểu cổ điển!). Bạn có thể thực hiện kiểm tra, bằng cách áp dụng các bộ lọc mù màu và Xám và xem liệu bạn vẫn có thể nhận thấy sự khác biệt hay không.

Đối với độ dày của dòng, một số vấn đề của blog đã đề cập trước khi giải quyết điểm này. Các dòng, nếu bạn có nhiều, nên có cùng độ dày, đó là "mỏng". Chỉ sử dụng các dòng dày nếu bạn muốn gọi sự chú ý đến đối tượng đó.


1
Tôi hoàn toàn không đồng ý với "Chỉ sử dụng đường kẻ dày ...". Các đường vảy màu xám nhạt dày có thể rất hiệu quả trong nhiều trường hợp.
Frank Harrell

1
Nó có thể chắc chắn. Tôi chỉ có nghĩa là nếu bạn sử dụng một phong cách bắt mắt, nó nên được sử dụng với một mục đích.
lựa chọn những
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.