산점도 행렬에서 사용 가능한 정보를 추출하기 어렵거나 불가능하게 만드는 여러 가지 문제가 있습니다.
너무 많은 변수가 함께 표시되었습니다. 산점도 행렬에 변수가 많은 경우 각 그림이 너무 작아서 유용하지 않습니다. 주목해야 할 것은 많은 플롯이 복제되어 공간을 낭비한다는 것입니다. 또한 모든 조합을보고 싶지만 모두 조합 할 필요는 없습니다. 산점도 행렬을 4 개 또는 5 개의 작은 블록 (유용하게 시각화 할 수있는 숫자)으로 나눌 수 있습니다. 각 블록마다 하나씩 여러 개의 플롯을 만들어야합니다.
공간의 개별 지점에 많은 데이터가 있으므로 서로 겹쳐 쌓입니다. 따라서 각 위치에 몇 개의 포인트가 있는지 볼 수 없습니다. 이 문제를 해결하는 데 도움이되는 몇 가지 트릭이 있습니다.
- .5
- 데이터가 너무 많으면 지 터링조차도 패턴을 식별하기 어렵습니다. 채도가 높지만 크게 투명한 색을 사용할 수 있습니다 . 서로 위에 많은 데이터가 쌓여 있으면 색상이 어두워지고 밀도가 거의 없으면 색상이 밝아집니다.
- 투명도가 작동하려면 데이터를 표시하기 위해 단색 기호 가 필요 하지만 R은 기본적으로 빈 원을 사용합니다.
이러한 전략을 사용하여 다음은 예제 R 코드와 플롯입니다.
# the alpha argument in rgb() lets you set the transparency
cols2 = c(rgb(red=255, green=0, blue=0, alpha=50, maxColorValue=255),
rgb(red=0, green=0, blue=255, alpha=50, maxColorValue=255) )
cols2 = ifelse(breast$class==2, cols2[1], cols2[2])
# here we jitter the data
set.seed(6141) # this makes the example exactly reproducible
jbreast = apply(breast[,1:9], 2, FUN=function(x){ jitter(x, amount=.5) })
jbreast = cbind(jbreast, class=breast[,10]) # the class variable is not jittered
windows() # the 1st 5 variables, using pch=16
pairs(jbreast[,1:5], col=cols2, pch=16)
windows() # the 2nd 5 variables
pairs(jbreast[,6:10], col=cols2, pch=16)
windows() # to match up the 1st & 2nd sets requires more coding
layout(matrix(1:25, nrow=5, byrow=T))
par(mar=c(.5,.5,.5,.5), oma=c(2,2,2,2))
for(i in 1:5){
for(j in 6:10){
plot(jbreast[,j], jbreast[,i], col=cols2, pch=16,
axes=F, main="", xlab="", ylab="")
box()
if(j==6 ){ mtext(colnames(jbreast)[i], side=2, cex=.7, line=1) }
if(i==5 ){ mtext(colnames(jbreast)[j], side=1, cex=.7, line=1) }
if(j==10){ axis(side=4, seq(2,10,2), cex.axis=.8) }
if(i==1 ){ axis(side=3, seq(2,10,2), cex.axis=.8) }
}
}