2014-10-11 4 views
0
curve(-12 * log(x) - (415/x), 25, 50) 
abline(h = -55, lty = 2) 

Я хотел бы построить участок между кривой и сплошной линией и затенять его, но не смог этого сделать. Я попытался использовать функцию trapz из пакета pracma. Мы ценим любые предложения?Площадь под кривой

ответ

1

Тогда вы можете использовать polygon(), где вы в основном определяете координаты x и y достаточного количества точек, чтобы сделать его гладким. Я пойду с 120:

ff <- function(x) -12 * log(x) - (415/x) ## define curve 

# get a vector or potential x values for the polygon 
x1 <- seq(from=25, to=50, length.out=120) 
x1 <- x1[ff(x1) >= -55] ## filter only relevant section 

x2 <- rev(x1) ## reverse the vector for the return trip 
xx <- c(x1, x2) ## concatenate to get all x coordinates 
yy <- c(rep(-55, length(x1)), ff(x2)) 

curve(ff, 25, 50) 
abline(h = -55, lty = 2) 
# join the dots and fill the space orange 
polygon(xx, yy, col='orange') 

EDIT: Добавлен код для всей процедуры, чтобы отразить комментарий от @epsilone

+1

Хорошего ответа @ilir, как предложение, я бы добавить кусок кода из перед вызовом «polygon», чтобы вы могли получить желаемый конечный результат в одном блоке кода;) – epsilone

+0

@espilone спасибо, это хорошее предложение. – ilir

Смежные вопросы