2017-12-07 18 views
2

두 변수 사이에 상호 작용이 있음을 알 수있는 모델이 있습니다. a와 b는 내 응답 변수에 큰 영향을줍니다. c. 세 개 모두 연속 숫자 변수입니다. 세부 사항 c는 내 응답 변수의 변화율, b는 예측 변수의 변화율이며, a는 평균 연간 강우량입니다. 분석 단위는 래스터의 픽셀입니다. 그래서 내 모델은 연례 강우량이 내 예측 변수가 내 반응에 미치는 영향을 수정한다는 뜻입니다.3 개의 연속 변수의 윤곽 플롯 또는 히트 맵

이 상호 작용을 시각화하려면 x 축과 y 축에 a 및 b가있는 등고선 플롯/히트 맵/레벨 플롯을 사용하고, 응답 변수가 설명 된 공간 내에서 어떻게 변하는지를 보여주는 색상을 제공하고 싶습니다. a와 b. 나는 산포도하여이 작업을 수행 할 수 있지만 아주 예쁜이나 쉬운 일이 아니다는 해석 :

qplot(b, a, colour = c) + 
    scale_colour_gradient(low="green", high="red") + 

enter image description here

내가 얻을 수있는 모든 오류 비록 윤곽 플롯/열지도/수준의 플롯을 플롯 할 때 , 빈 플롯 또는 추한 플롯.

ggplot(data = Mod, aes(x = Rain, y = Bomas, z = Fire)) + 
    geom_contour() 

Warning message: 
Not possible to generate contour data 

geom_raster 처음에 나에게 Error: cannot allocate vector of size 81567.2 Gb을 제공하지만 난 내 데이터를 반올림 생성 때 :

geom_contour

은 나에게 오류를 제공

ggplot(data = df, aes(x = a, y = b, z = c)) + 
    geom_raster(aes(fill = c)) 

enter image description here

geom_raster 코드에 interpolate = TRUE 추가 단지 선이 조금 흐리게 만듭니다.

geom_tile 빈 그래프를 생성하지만, C의 스케일 바 :

ggplot(data = df, aes(x = a, y = b, z = c)) + 
    geom_tile(aes(color = c)) 

enter image description here

나는 또한 stat_density2d를 사용하고 충전 및/또는 C에 색상을 설정하려했지만, 단지 오류가있어, 나는뿐만 아니라 lattice 패키지에 levelplot를 사용하여 시도했다하지만이 생성합니다

levelplot(c ~ a * b, data = df, 
      aspect = "asp", contour = TRUE, 
      xlab = "a", 
      ylab = "b") 

enter image description here

나는 함수가 연속적인 x와 y 변수를 다루기 위해 설정되지 않았기 때문에 내가 겪고있는 문제가 의심 스럽다. 모든 예제는 요소를 사용하는 것 같다. 나는 빈 너비를 변경함으로써 그것을 보완 할 수있을 것이라고 생각 했겠지만, 그 중 하나는 작동하지 않는 것 같습니다. 3 개의 연속 변수로 히트 맵을 만들 수있는 함수가 있습니까? 또는 요인으로 a 및 b 변수를 처리하고 수동으로 데이터에 적합한 저장소가있는 데이터 프레임을 만들어야합니까?당신이 직접 실험 할 경우

당신은 내가 가진 데 무슨 비슷한 문제를 얻을 :

df<- as.data.frame(rnorm(1:1068)) 
df[,2] <- rnorm(1:1068) 
df[,3] <- rnorm(1:1068) 
names(df) <- c("a", "b", "c") 

답변

1

당신은 자동으로 쓰레기통을 얻고, 예를 들어 stat_summary_2d를 사용하여 방법을 계산할 수 있습니다

ggplot(df, aes(a, b, z = c)) + 
    stat_summary_2d() + 
    geom_point(shape = 1, col = 'white') + 
    viridis::scale_fill_viridis() 

enter image description here

또 다른 좋은 옵션은 세 번째 변수로 데이터를 슬라이스, 작은 배수를 음모하는 것입니다.

library(ggplot2) 
ggplot(df, aes(a, b)) + 
    geom_point() + 
    facet_wrap(~cut_number(c, 4)) 

enter image description here

+0

당신이 당신의 첫 번째 그림의 색상이 전체 플롯을 포함 있도록이 확장 할 수있는 방법을 알아 : 이건 정말하지만 임의의 데이터를 아주 잘 표시되지 않습니다? – James

+0

관측치가없는 빈에서 평균값을 계산할 수 없습니다. – Axeman