2013-11-21 3 views
1

색상/투명도를 사용하여 ggplot을 사용하여 유사 - boxplot을 만들려고했지만 약간 어려움을 겪고 있습니다. 아이디어는 x 축상의 모든 점에 대해 특정한 y 값이 더 많이 발생할수록 그 (x, y) 점이 더 어두워 야한다는 것입니다. 합병증을 더하기 위해 각 (x, y)에 대한 카운트가 없지만, 대신이 카운트가 (x, ymin)과 (x, ymax) 사이의 모든 포인트에 대해 유지된다는 것을 의미하는 (x , ymin:ymax)에 대한 카운트가 있습니다.색으로 구분 된 박스 플롯

검색 중 조금 까다로운 것 같다 나는 "내가 사용할 수있는 모든 것을 발굴 할 수없는 해요. 나 자신에 의해 얻을 수있는 가장 가까운이었다 아래, 그러나 이것은 큰 데이터 세트에 대한 매우 오래 걸립니다.

library(ggplot2) 
set.seed(1) 
(d <- data.frame(cbind(x = sample(1:3, 10, replace = TRUE), y = sample(3:8, 10, replace = TRUE)), fac = sample(1:3, 10, replace = TRUE))) 

p1 <- ggplot() 

for (i in seq(nrow(d))) 
{ 
    p1 <- p1 + geom_rect(
    data=d[i,], 
    aes(
     xmin = fac - .4, 
     xmax = fac + .4, 
     ymin = x, 
     ymax = y), 
    alpha = .25 
) 

} 

enter image description here

어떤 제안이 있습니까? 솔루션을 선호합니다. 감사합니다.

업데이트 : 11 월 23 일, 트로이의 도움으로 여기까지 왔습니다. 유일한 문제는 범례가 각 직사각형의 t 값 사이에있는 반면 x, y의 누적 t의 범위에 있어야한다는 것입니다.

library(ggplot2) 
set.seed(1) 
d <- data.frame(cbind(x = sample(1:3, 6, replace = TRUE), 
         ymin = sample(3:8, 6, replace = TRUE), 
         ymax = sample(3:8, 6, replace = TRUE), 
         t = sample(3:8, 6, replace = TRUE)/10 
        )) 

ggplot(data=d) + 
    geom_rect(aes(xmin=x-0.4,xmax=x+0.4,ymin=ymin,ymax=ymax,alpha=t),fill="red") 
+0

어쩌면 줄거리의 가장자리에 양탄자 플롯을 추가를? http://stackoverflow.com/questions/11546256/two-way-density-plot-combined-with-one-way-density-plot-with-selected-regions-in – amzu

답변

2

ggplot는 원래 플롯의 역학에 만족하는 경우이 적어도, 루프를 제거 얻을 것이다

을 geom_rect 사용하여 벡터를 지원하는 것?

library(ggplot2) 
set.seed(1) 
(d <- data.frame(cbind(x = sample(1:3, 10, replace = TRUE), y = sample(3:8, 10, replace = TRUE)), fac = sample(1:3, 10, replace = TRUE))) 
ggplot(data=d) + 
geom_rect(aes(xmin=fac-0.4,xmax=fac+0.4,ymin=x,ymax=y),alpha=0.25,fill="red") 

plot

또는 개수의 다른 구현을 사용하여 투명도가 계산 방법을 변경하려는 않았다()?

편집 - 당신은 그냥 "수"표시와 그리드 차단하기 위해 찾고 있다면 :

library(ggplot2) 
set.seed(1) 
d <- data.frame(cbind(x = sample(1:3, 15, replace = TRUE), 
    y = sample(3:8, 18, replace = TRUE))) 

ggplot(data=d) + 
    geom_tile(aes(x=x,y=y),alpha=0.25,fill="red") 

plot-tile

+0

+1 답장을 보면 알 수 없습니다. 왜 내가 처음에 루프를 돌렸지. 그리고 당신은 그 문제에 대해 좋은 통찰력을 가지고 있습니다. 나는 그 투명성 부분을 언급하는 것을 완전히 잊었다. 나는 그것을 고정시킨'aes' 안의'alpha' 인자에 다른 컬럼을 연관 시켰습니다. 각 x 카테고리에서 직사각형 대신 연속 된 플롯을 만들 수있는 방법은 무엇입니까? – TheComeOnMan

+0

투명도가있는 x-y를 그리드로 그리는 경우 위의 편집에서 geom_tile을 사용할 수 있습니까? 그게 정확히 당신이 원하는 것일 지 확신하지 못합니다. 다른 것이라면, d에 기초하여 설명 할 수 있습니까? – Troy

+0

아니요, 옳은 길을 가고 있습니다. 나는 그 질문에 아무런 추가 점이 없다는 것을 의미했다. 각 사각형은 데이터 포인트이므로, 범례는 사각형의 가장 낮은 카운트 값에서 가장 높은 카운트 값까지 투명도를 표시한다. 그러나 그래프에는 실제로 사각형이 겹치고 투명도는 x, y의 누적 투명도 사이에 있어야합니다. 어떻게 할 수 있니? – TheComeOnMan