您自己回答的问题 2 和 3 - 颜色 brewer 调色板是合适的。最难的问题是 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
斯蒂芬科斯林在他的书中提出的一点是,不是有多少不同的线条使情节复杂,而是线条可以采用多少不同类型的形状。如果 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 行。这是面板 1 中使用 Excel 的轨迹示例!
还有其他要点,例如如果您的轨迹不平滑,浅灰色线可能会产生误导。例如,您可以有两条 X 形的轨迹,或两条正面朝上和倒置 V 形的轨迹。将它们绘制成相同的颜色,您将无法追踪线条,这就是为什么有些人建议使用平滑线或抖动/偏移点绘制平行坐标图(Graham and Kennedy, 2003 ; Dang et al., 2010)。
因此,设计建议可能会根据最终目标和数据性质而改变。但是当在轨迹之间进行双变量比较时,我认为相似轨迹的聚类和使用小的倍数使得在各种情况下更容易解释图。我觉得这通常比任何颜色/虚线组合在复杂的图中更有效率。许多文章中的单面板图比它们需要的大得多,并且通常可以在页面限制内拆分为 4 个面板而不会造成太大损失。