您回答了自己的问题2和3-酿造啤酒的调色板很合适。困难的问题是1,但是像尼克一样,我担心这是基于错误的希望。线条的颜色并不是使人们能够轻松区分线条的原因,它是基于连续性和线条的曲折性。因此,除了线条的颜色或虚线图案之外,还有基于设计的选择,这些选择将有助于使图形更易于解释。
我将窃取Frank的其中一个图,该图显示样条线的灵活性,以在有限的区域内近似许多不同形状的函数。
#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:(nk−1)){
xx[,i]<-(xx[,i]−min(xx[,i]))/
(max(xx[,i])−min(xx[,i]))
for(i in 1:20){
beta<-2∗runif(nk−1)−1
xbeta<-xx%∗%beta+2∗runif(1)−1
xbeta<-(xbeta−min(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
斯蒂芬·科斯林(Stephen Kosslyn)在书中提出的观点是,绘制情节并不是因为有多少不同的线条而变得复杂,而是线条可以采用多少种不同类型的形状。如果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个比较都不感兴趣,或者对特定的行之间进行比较,或者对其余行的分布进行比较感兴趣。尼克的回答很好地显示了后者。绘制细,浅色和半透明的背景线,然后以任何亮色或更粗的方式绘制前景线就足够了。(对于设备,请确保在其他线条上方绘制前景线条!)
要创建一个层次,使每个单独的线条都可以轻松地在纠缠中进行区分,要困难得多。在制图学中实现前景与背景区分的一种方法是使用阴影(有关示例,请参见Dan Carr的本文)。这不会扩展到10行,但可以帮助2或3行。这是使用Excel的Panel 1中的轨迹的示例!
还有其他要点,例如,如果您的轨迹不平滑,则浅灰色的线条可能会误导您。例如,您可能有两个形状为X的轨迹,或者两个形状分别为右侧和上下V的轨迹。将它们绘制为相同的颜色将无法绘制线条,这就是为什么有些人建议使用平滑线或抖动/偏移点绘制平行坐标图(Graham和Kennedy,2003;Dang等,2010)。
因此,设计建议可以根据最终目标和数据的性质而变化。但是,当在轨迹之间进行二元比较时,我认为相似轨迹的聚类和使用小的倍数使图在各种情况下都更易于解释。我觉得通常比在复杂的绘图中将颜色/线破折号组合起来要更有生产力。许多文章中的单个面板图远大于其所需的大小,并且通常可以在页面约束内将面板分成4个面板而不会造成太大损失。