2013-08-11 2 views
0

저는 새 R 사용자이고 2 개의 연속 변수와 범주 형 변수 사이의 상호 작용을 차트로 표시하려고합니다.그래프에서 ggplot을 사용하여 여분의 줄을 제거하는 방법

interaction.plot 사용 :

interaction.plot(nonconform, trans, employdisc, type="b", col=(1:3) , 
      leg.bty="o", leg.bg="beige", lwd=2, pch=c(18,24,22), 
      xlab="Nonconformity", 
      ylab="Discrimination", 
      main="Interaction Plot") 

나는이 결과를 얻을 :

interaction plot

내가 ggplot와 같은 일을 시도

ggplot(data=NTDS.zip, aes(x=nonconform, y=employdisc, colour = factor(trans), group=trans,)) + 
      stat_summary(fun.y=mean, geom="point") + 
      stat_summary(fun.y=mean, geom="line") 

나는이를 얻을 수 결과 :

ggplot chart

여분의 선이 있습니다 (회색으로 표시하면 제거 할 수 없음). 그 가능성이 누락 된 데이터를 나타내는 있지만 차트에서 해당 줄을 제거 할 수있는 방법을 찾지 못했습니다. 내가 발견 한 모든 토론은 누락 된 데이터로 인한 경고를 억제하는 것에 대해 이야기했지만 차트의 추가 선에 대해서는 언급하지 않았습니다.

의견이 있으십니까?

업데이트

R Graphics Cookbook을 읽은 후 다른 방법을 시도했습니다.

책의 방법은 데이터를 먼저 요약하는 것과 관련이 있습니다.

tg <- ddply(ntds.new, c("trans", "nonconform"), summarize, empdisc=mean(employdisc)) 

그리고 차트를 플로팅합니다. 선 종류와 플롯하지 않는 동안

나는, 2 개 종류 (색상 및 선 종류)

ggplot(tg, aes(x=nonconform, y=empdisc, colour=trans))+geom_line() 
ggplot(tg, aes(x=nonconform, y=empdisc, linetype=trans))+geom_line() 

색 문 줄거리는 별도의 라인을 가지고 했어요. 이것에 대한

데이터이었다 :

trans nonconform empdisc 
1 1 0 1.104046 
2 1 1 1.472050 
3 1 2 1.930070 
4 1 3 2.247706 
5 1 4 3.407407 
6 1 NA 7.250000 
7 2 0 3.427230 
8 2 1 3.929707 
9 2 2 4.062275 
10 2 3 4.373853 
11 2 4 4.470149 
12 2 NA 5.294118 
13 3 0 1.309524 
14 3 1 1.968310 
15 3 2 2.366589 
16 3 3 3.815000 
17 3 4 3.560606 
18 3 NA 6.000000 
19 4 0 2.661290 
20 4 1 3.208861 
21 4 2 3.033195 
22 4 3 3.322176 
23 4 4 3.755906 
24 4 NA 6.625000 
25 NA 0 4.000000 
26 NA 1 4.166667 
27 NA 2 2.500000 
28 NA 3 6.666667 
29 NA 4 5.400000 
30 NA NA 2.000000 

내가 다시 가서 트랜스 또는 nonconform 중 열의 경우 누락로 (10) 라인을 삭제.

trans nonconform empdisc 
1 1 0 1.104046 
2 1 1 1.472050 
3 1 2 1.930070 
4 1 3 2.247706 
5 1 4 3.407407 
6 2 0 3.427230 
7 2 1 3.929707 
8 2 2 4.062275 
9 2 3 4.373853 
10 2 4 4.470149 
11 3 0 1.309524 
12 3 1 1.968310 
13 3 2 2.366589 
14 3 3 3.815000 
15 3 4 3.560606 
16 4 0 2.661290 
17 4 1 3.208861 
18 4 2 3.033195 
19 4 3 3.322176 
20 4 4 3.755906 

내 초기 문제를 해결하지만,이 솔루션은 수 있어야하는 것보다 더 복잡한 것, 그리고 나는 "컬러"와 줄거리가 영향을받은 이유에 대해 궁금하고 "선 종류"를 가진 사람은 아니었다.

+0

나는 매우 도움이 될 것입니다. –

+0

추가 정보를 추가했습니다. 이게 도움이 되길 바란다. – Elombardi

답변

1

테이블 tg의 데이터를 살펴보면 변수 trans에 대한 NA 값이 있습니다. 당신이 사용하는 경우

그 NA 값도 있기 때문에 NA 수준의 색상 스케일의 기본 동작에 대한 플롯 라인의 색 (요인)을 transgrey50 색상 (na.value="grey50")에서 그들을 플롯하는 것입니다. 그러나 선 종류 축척의 경우 NA 레벨의 기본 동작은 빈 줄 (na.value="blank")을 그려서 선이 보이지 않도록합니다.

문제를 해결하려면 몇 가지 해결책이 있습니다. 먼저 scale_color_discrete()을 추가하고 na.value=을 NA로 설정할 수 있습니다.

ggplot(tg, aes(x=nonconform, y=empdisc, colour=as.factor(trans)))+ 
    geom_line()+ 
    scale_color_discrete(na.value=NA) 

또 다른 해결책은 데이터에서 하위 값을 제거하여 데이터에서 NA 값을 제거한 다음 데이터를 플롯하는 것입니다. 이는 ggplot() 호출 내에서도 수행 할 수 있습니다. 당신이 실제 데이터 집합을 제공 할 수 있다면

ggplot(tg[complete.cases(tg),], aes(x=nonconform, y=empdisc, colour=as.factor(trans)))+ 
    geom_line() 

enter image description here

관련 문제