Я хотел бы использовать что-то вроде функции «полигон», чтобы заполнить область под кривой, но я хочу использовать не цвета, а узкие параллельные линии (лучше, если они будут наклонными).
Это возможно?
Я хотел бы использовать что-то вроде функции «полигон», чтобы заполнить область под кривой, но я хочу использовать не цвета, а узкие параллельные линии (лучше, если они будут наклонными).
Это возможно?
Используя аргументы density
и angle
этого можно добиться в polygon()
(т.е. прочитать руководство)
x=seq(-7,10,length=200)
y1=dnorm(x,mean=0,sd=1)
plot(x,y1,type="l",lwd=2,col="red")
y2=dnorm(x,mean=3,sd=2)
lines(x,y2,type="l",lwd=2,col="blue")
polygon(x,pmin(y1,y2), density = 10, angle = -45)
с МИНОРАЛЬНОЙ настройкой (заштрихованная область под двумя кривыми с использованием R)
Непонятно, что вы подразумеваете под узкими параллельными линиями. Но можно заполнить многоугольник набором линий, проведенных под определенным углом, с определенным расстоянием между линиями. Аргумент плотность управляет расстоянием между линиями (количество строк на дюйм), а аргумент угол управляет углом линии. Вот пример, где я хеширую область, определяемую пересечением двух полигонов:
plot(NA,xlim=c(0,1),ylim=c(0,1), xaxs="i",yaxs="i") # Empty plot
a <- curve(x^2-0.25, add = TRUE) # First curve
b <- curve(0.5-x^4, add = TRUE) # Second curve
names(a) <- c('xA','yA')
names(b) <- c('xB','yB')
with(as.list(c(b,a)),{
id <- yB<=yA
# b<a area
polygon(x = c(xB[id], rev(xA[id])),
y = c(yB[id], rev(yA[id])),
density=10, angle=60, border=NULL)
# a>b area
polygon(x = c(xB[!id], rev(xA[!id])),
y = c(yB[!id], rev(yA[!id])),
density=10, angle=30, border=NULL)
})