将图像设置为多边形的颜色

Posted

技术标签:

【中文标题】将图像设置为多边形的颜色【英文标题】:Setting an image as the colour of a polygon 【发布时间】:2013-04-30 11:07:55 【问题描述】:

我从 statmethods[dot]net 借用了这段代码。结果是正态分布下的彩色区域。

mean=100; sd=15
lb=80; ub=120

x <- seq(-4,4,length=100)*sd + mean
hx <- dnorm(x,mean,sd)

plot(x, hx, type="n", xlab="IQ Values", ylab="Density",
  main="Normal Distribution", axes=FALSE)

i <- x >= lb & x <= ub
lines(x, hx)
polygon(c(lb,x[i],ub), c(0,hx[i],0), col="red") 

area <- pnorm(ub, mean, sd) - pnorm(lb, mean, sd)
result <- paste("P(",lb,"< IQ <",ub,") =",
   signif(area, digits=3))
mtext(result,2)

我想知道是否可以选择图像作为红色多边形的颜色?

非常感谢!

【问题讨论】:

【参考方案1】:

使用您的代码,我基本上建议使用png 包(基于In R, how to plot with a png as background? 的建议)绘制图像(我在下面使用随机图像),然后在上面绘制线条。

mean=100; sd=15
lb=80; ub=120

x <- seq(-4,4,length=100)*sd + mean
hx <- dnorm(x,mean,sd)

# load package and an image
library(png)
ima <- readPNG("Red_Hot_Sun.PNG")

# plot an empty plot with your labels, etc.
plot(1,xlim=c(min(x),max(x)), type="n", xlab="IQ Values", ylab="Density",
  main="Normal Distribution", axes=FALSE)
# put in the image
lim <- par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])

# add your plot
par(new=TRUE)
plot(x, hx, xlim=c(min(x),max(x)), type="l", xlab="", ylab="", axes=FALSE)
i <- x >= lb & x <= ub
lines(x, hx)
# add a polygon to cover the background above plot
polygon(c(x,180,180,20,20), c(hx,0,1,1,0), col="white")
# add polygons to cover the areas under the plot you don't want visible
polygon(c(-20,-20,x[x<=lb],lb), c(-10,min(hx),hx[x<=lb],-10), col="white")
polygon(c(ub,x[x>=ub],200,200), c(-1,hx[x>=ub],min(hx),-1), col="white")

# add your extra text
area <- pnorm(ub, mean, sd) - pnorm(lb, mean, sd)
result <- paste("P(",lb,"< IQ <",ub,") =",
   signif(area, digits=3))
mtext(result,2)

给你:

【讨论】:

以上是关于将图像设置为多边形的颜色的主要内容,如果未能解决你的问题,请参考以下文章

DirectX 图像纹理四边形在透明的地方显示底层控件颜色

在 Flutter 中设置谷歌地图多边形的不透明度颜色

OpenCV:如何混合多个不同颜色的半透明多边形?

安卓怎么设计六边形的游戏背景

裁剪图像包含在 4 边(非矩形)多边形中

如何在 iOS 中将图像裁剪为多边形?