2013-01-17 3 views
4

선형 제약 조건이 6 개 있습니다. 나는이 문제에 대한 해결책을 손으로 그리고 r을 통해 찾는 방법을 안다. 가능한 지역에 대한 그림을 얻는 쉬운 방법을 찾고 있습니다.선형 제약 조건을 가진 R의 음영 처리 된 다각형

아무런 성공도없이 ggplot2을 시도했습니다.

다음은 제약이다 : 당신의 도움에 대한 x1 >= 0, x2 >= 0, x2 <= 10x2 <= 12 - 2/5 * x1, x2 <= 18 - x1, x2 <= 18 - x1

require(ggplot2) 

# x2 <= 12 - 2/5*x1 
fun1 = function(x1){ 
    x2 = 12 - 2/5*x1 
    return(x2) 
} 

# x2 <= 18 - x1 
fun2 = function(x1){ 
    x2 = 18 - x1 
    return(x2) 
} 

# x2 = 44 - 3*x1 
fun3 = function(x1){ 
    x2 = 44 - 3*x1 
    return(x2) 
} 

x1 = seq(0,20) 
mydf = data.frame(x1, fun1(x1), fun2(x1),fun3(x1),rep(10,length(x1))) 
names(mydf) = c('x1','y1','y2','y3','y4') 
mydf$y5 = rep(0,length(x1)) 

p0 = ggplot(mydf, aes(x = x1)) + 
    coord_cartesian(ylim=c(0,10),xlim = c(0,20))+      
    geom_line(aes(y = y1), colour = 'blue') + 
    geom_line(aes(y = y2), colour = 'green') + 
    geom_line(aes(y = y3), colour = 'red') + 
    geom_line(aes(y = y4), colour = 'purple') + 
    geom_line(aes(y = y5), colour = 'black') 

p0 + geom_area(aes(y = pmin(y1,y2,y3,y4,y5)), fill = 'gray60') 

감사합니다!

편집 다음 pmin 함수에서 마지막 y5를 제거 트릭을 수행합니다

p0 + geom_area(aes(y = pmin(y1,y2,y3,y4,y5)), fill = 'gray60') 
+0

나는 내 자신의 실수를 알아 냈다고 생각합니다. 나는이 지역을 양의 사분원으로 경계를 정하고 있기 때문에 라스 라인에 작은 수정이 트릭을 할 것입니다. 원래 게시를 업데이트합니다. – notrockstar

+0

좋은 질문 @notrockstar. 가능한 지역을 그늘지게하려고 노력 했습니까? – MYaseen208

+0

하프 - 플레인을 채색 할 그래픽 함수는 모르지만 범위 밖의 좌표를 넣는 것은 가능합니다. 아직도이 질문을 공개적인 질문이라고 생각하십니까? –

답변

0

내 문제가 마지막 변수 y5했다. pmin 기능에서 그것을 제거하는 것이 트릭을 만들었습니다.

p0 = ggplot(mydf, aes(x = x1)) + 
    coord_cartesian(ylim=c(0,10),xlim = c(0,20))+      
    geom_line(aes(y = y1), colour = 'blue') + 
    geom_line(aes(y = y2), colour = 'green') + 
    geom_line(aes(y = y3), colour = 'red') + 
    geom_line(aes(y = y4), colour = 'purple') + 
    geom_line(aes(y = y5), colour = 'black') 

p0 + geom_area(aes(y = pmin(y1,y2,y3,y4)), fill = 'gray60') 
관련 문제