2011-10-16 4 views
0

가능한 중복 :
Shading a kernel density plot between two points밀도 그래프의 다각형?

내가 강조 특정 부분과 밀도 플롯을 생성 할 ..

myd <- c(2,4,5, 4,3,2,2,3,3,3,2,3,3,4,2,4,3,3,3,2,2.5, 2, 3,3, 2.3, 3, 3, 2, 3) 

나는, 밀도 플롯과 색상을 만들려면 3보다 큰 부분은 곡선의 끝 부분에 위치합니다.

내 실패 코드

plot(density(myd),xlim=c(0,5)) 

polygon(c(3, myd, max(myd)),c(0,density(myd),0.6),col="tan") 
polygon(c(3, myd, max(myd)),c(0,density(myd),0.6),col="tan") 
Error in xy.coords(x, y) : 'x' and 'y' lengths differ 

polygon(c(3, myd, max(myd)),c(0,myd,0.6),col="tan") 

내가 필요로하지 가까이 분명하지만, 끔찍한, 그래프를 생성!

+0

다음과 같은 것을 찾고 계십니까? http://stackoverflow.com/questions/3494593/shading-a-kernel-density-plot-between-two-points –

+0

예, 답장을 보내 주셔서 감사합니다. 죄송합니다. 게시하기 전에이 답변을 찾을 수 없습니다 .. .. – jon

+0

문제 없습니다. 훌륭한 게시물이므로 누구든지 직접 안내해 드리겠습니다. –

답변

0

원본 데이터가 아닌 밀도의 값을 사용해야합니다. 가까이 있지만 기본 플롯 매개 변수는 5 넘어 가고 있기 때문에 기본 플롯 행동을 그냥 클립하는 것 아마 6에 제한 값을 선택해야

dens <- density(myd) 
polygon(c(3, dens$x[dens$x>3 & dens$x < 5], 5), c(0, dens$y[dens$x>=3 & dens$x <= 5], 0),col="tan") 

. 상자 나 x 축을 사용하지 않고 플로팅을하고 X 축을 0으로 배치하는 것이 가장 좋습니다. 그러면 예상했던 것과 비슷한 결과를 얻을 수 있습니다. 사용해보기 ...

dens <- density(myd) 
plot(dens, xlim = c(0, 5), xaxt = 'n', bty = 'n') 
axis(1, pos = 0) 
polygon(c(3, dens$x[dens$x>3 & dens$x < 6], 6), c(0, dens$y[dens$x>=3 & dens$x <= 6], 0),col="tan")