2016-10-07 2 views
2

다른 x 축 한계가있는 여러 플롯을 만들고 회색 상자를 추가하여 관심 영역을 강조하고 싶습니다. 동일한 알파벳 값 ggplot2을 사용하는 동일한 geom_rect() 명령을 사용하더라도 매우 다른 회색 색상의 결과가 표시됩니다. 나는 herehere을 보았지만 지금까지는이 상자를 같은 수준의 투명성으로 만드는 방법을 찾지 못했습니다. 아래는 재현 가능한 예제 (가짜 데이터 포함)와 생성 된 수치입니다. 회색 직사각형의 다른 색상을 확인하십시오. 나는 그레이가 플롯을 가로 질러 동일하길 원한다. 첫 번째 예에서ggplot2 : 알파에서 일치하지 않는 색상

Data<-structure(list(X = c(34L, 27L, 28L, 47L, 26L, 3L, 13L, 31L, 39L, 
16L, 45L, 5L, 49L, 17L, 29L, 43L, 1L, 35L, 41L, 10L, 48L, 24L, 
12L, 11L, 30L, 40L, 8L, 4L, 20L, 25L, 50L, 22L, 9L, 21L, 18L, 
7L, 15L, 44L, 6L, 36L, 46L, 33L, 2L, 37L, 23L, 14L, 42L, 38L, 
19L, 32L, 34L, 27L, 28L, 47L, 26L, 3L, 13L, 31L, 39L, 16L, 45L, 
5L, 49L, 17L, 29L, 43L, 1L, 35L, 41L, 10L, 48L, 24L, 12L, 11L, 
30L, 40L, 8L, 4L, 20L, 25L, 50L, 22L, 9L, 21L, 18L, 7L, 15L, 
44L, 6L, 36L, 46L, 33L, 2L, 37L, 23L, 14L, 42L, 38L, 19L, 32L 
), Y = c(130L, 146L, 58L, 110L, 117L, 135L, 133L, 108L, 97L, 
61L, 71L, 64L, 103L, 142L, 125L, 104L, 100L, 147L, 111L, 78L, 
56L, 145L, 62L, 69L, 70L, 116L, 137L, 79L, 150L, 94L, 91L, 81L, 
65L, 118L, 129L, 83L, 98L, 84L, 85L, 148L, 93L, 73L, 59L, 87L, 
134L, 88L, 136L, 90L, 140L, 55L, 89L, 115L, 123L, 51L, 132L, 
126L, 66L, 80L, 60L, 120L, 109L, 76L, 74L, 57L, 149L, 121L, 138L, 
128L, 114L, 127L, 68L, 107L, 67L, 112L, 144L, 119L, 53L, 52L, 
54L, 96L, 131L, 106L, 113L, 72L, 95L, 63L, 92L, 86L, 75L, 105L, 
82L, 101L, 139L, 143L, 122L, 77L, 99L, 141L, 124L, 102L), B = structure(c(2L, 
2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 
1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 
1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 
1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 
2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 
2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 
1L, 1L, 1L), class = "factor", .Label = c("no", "yes"))), .Names = c("X", 
"Y", "B"), row.names = c(NA, -100L), class = "data.frame") 

Data2<-structure(list(variable = c(2.49676547444708, 0.67359598601097, 
0.674751772966082, 0.0317590441796792, 0.485143583939748, 1.08231639527806, 
0.0732344181040914, 1.62357048819912, 0.146833215667032, 0.823157103468943, 
0.240761579418538, 1.37540376416553), DOY_mid_month = c(15, 46, 
75, 106, 136, 167, 197, 228, 259, 289, 320, 350)), .Names = c("variable", 
"DOY_mid_month"), row.names = c(NA, -12L), class = "data.frame") 

test<-ggplot(data=Data) + 
    geom_rect(aes(xmin=5, xmax=30, ymin=1, ymax=40), alpha = 0.02) + 
    geom_point(aes(x = X, y = X, colour= B), data =Data, size=2) + 
    theme_bw() 

test2 <-ggplot(data=Data2) + 
    geom_rect(aes(xmin=5, xmax=30, ymin=-Inf, ymax=Inf), alpha = 0.02) + 
    geom_point(aes(x = DOY_mid_month, y = variable), color="black", size=4) + 
    scale_x_continuous("Day of Year", limits = c(0, 366)) + # Use this to add back X-axis label for the bottom plot in panel 
    scale_y_continuous(expression(paste("Variable", sep=""))) + 
    theme_bw() 

플롯 결과 : 두 번째 예에서

test

플롯 결과 : 현재 데이터 세트의 각 행에 대해 하나 개의 사각형을 그리는

test2

답변

2

. 중복되는 직사각형이 많을수록 더 어두워지고, 더 긴 데이터 세트는 더 어두운 직사각형을 갖습니다. 단일 사각형을 그리려면 geom_rect 대신 annotate을 사용하십시오.

annotate(geom = "rect", xmin=5, xmax=30, ymin=-Inf, ymax=Inf, alpha = 0.2) 

각 사각형은 한 번만 그려 있도록 해당 레이어에 하나의 행 data.frame을 줄 수 geom_rect을 고수 할 경우

. 여기에서는 가짜 데이터 집합을 사용합니다. 그러나 data.frame에서도 사각형 제한을 설정할 수 있습니다.

geom_rect(data = data.frame(fake = 1), 
      aes(xmin = 5, xmax= 30, ymin = -Inf, ymax = Inf), alpha = 0.2) 
+0

geom_point() 호출 후 annotate()를 사용하면 아름답게 작동합니다. – user2860703