如何填写R中某些特定区域的颜色?

Cha*_*Yan 5 plot r fill

这是问题所在:

x<-seq(0,10,length.out = 1000)
y1<-dnorm(x,mean = 2,sd=1)
y2<-dnorm(x,mean = 6,sd=1)
plot(x,y1,type="l")
lines(x,y2)
abline(v=x[380])
Run Code Online (Sandbox Code Playgroud)

该图如下所示.如何在垂直线的每一侧填充2种不同的颜色,比如红色和蓝色,但仍然低于两个常规密度函数.我以为我可以使用多边形,但失败了.

这是没有填充颜色的图表:

在此输入图像描述

Gre*_*gor 9

这是一种方式:

首先,我们将获得密度的平行最小值 - 这是y我们多边形顶部坐标的矢量.

y = pmin(y1, y2)

# set up your plot as in the question    
plot(x, y1, type="l")
lines(x, y2)

# define a re-usable variable for the vertical line placement
x_vert = 380
abline(v = x[x_vert])

# Now we'll draw 2 polygons, one for the left side, one for the right.
# The first (x,y) pairs of the polygon are just the (x,y) coords of the
# density we're filling to, until the vertical line
# Then we need to connect the "bottom" points, which have coordinates
# (x[x_vert], 0) and (x[1], 0)    
polygon(x = c(x[1:x_vert], x[x_vert], x[1]), 
        y = c(y[1:x_vert], 0, 0),
        col = "blue")
# similar for the right hand polygon, but now going from x_vert to length(x)
polygon(x = c(x[x_vert:length(x)], x[length(x)], x[x_vert]),
        y = c(y[x_vert:length(x)], 0, 0),
        col = "red")
Run Code Online (Sandbox Code Playgroud)

瞧!

在此输入图像描述