2017-09-13 16 views
0

ggplot을 사용하여 NMDS 플롯을 작성하려고합니다. 포인트 (커뮤니티/어셈블러) 및 선체 등의 표준 플롯 외에도 각 포인트의 알파를 조정하고 싶습니다.ggplot의 포인트 알파를 숫자 벡터로 설정하십시오.

저는 각 포인트에 해당하는 조사의 타이밍을 반영하는 0-1의 숫자 값 벡터 ("알파"라고 함)를 계산했습니다.이 값을 사용하여 각 포인트의 알파를 수정하고 싶습니다. 지금까지 내가의 주제에 변형을 사용하고 있습니다 : 이것은 나에게 모든 점의 알파가 1 플롯을 가지고 만있다

ggplot() + 
    geom_point(data = data.scores, aes(x = NMDS1, y = NMDS2, colour =Treatment), size = 3) + 
    scale_colour_manual(values = c("Burnt" = "black", "Grazed" = "tan4","Control" = "green4")) + 
    scale_alpha_manual(values = Alpha) + 
    geom_polygon(data = hull.data, aes(x = NMDS1, y = NMDS2, colour = Treatment), 
        linetype = "dashed", fill = NA) + 
    coord_equal() + 
    theme_bw() + 
    theme(panel.border = element_blank(), panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"), 
      legend.position="top") 

, 알파 1이 아니라 아마도 (같은 값으로 설정 내 벡터의 첫 번째 값) 또는 오류 메시지. 누구든지 내가 뭘 잘못하고 있는지 알 수 있니?

는 참고로 나는 비교적 쉽게 기본 R 그래픽을 사용하여 원하는 것을 만들 수 있었다 그러나 나는 ggplot 그래픽으로 내 플롯이 필요합니다

enter image description here

답변

1

ggplot() 구문은 값이 계층에 대해 매핑되는 예상 해당 레이어에 전달되므로 geom_point()에 있고 배율을 추가하는 것은 아닙니다. 따라서 알파 스케일을 적용 할 레이어를 정의하지 않으므로 모두 alpha = 1 (기본값)으로 표시됩니다.

geom_point()에서 직접 가공 벡터를 사용할 수 있습니다. mtcars로 재현 예제를 사용 : 당신이 aes(alpha = ...)에 아무것도 매핑되지 않기 때문에

library(ggplot2) 
set.seed(1) 

# sim your Alpha 
Alpha <- runif(nrow(mtcars)) 

ggplot(data = mtcars, aes(mpg, hp)) + 
    geom_point(alpha = Alpha) 

enter image description here

scale_alpha_manual()

이 음모에 영향을주지 않습니다.

+1

이와 비슷한 작업을 수행하고 알파 값에 대한 범례 항목을 찾은 사람은 누구나 다음을 사용하여 포인트 색상을 유지하면서 범례의 알파 비트를 제거 할 수 있습니다. scale_alpha_continuous (가이드 = F) + 사람들이 내가 원래 한 답변을 수정하기 전에 수정하기를 제안하기 전에 이미 거부했지만 거부되었습니다. – James