颜色指定区域?

use*_*887 4 geometry r

我试图弄清楚是否有一种方法可以只使用grid.circle创建的圆圈的一半.

    library(grid)
    grid.circle(x=.5, y=.5, r=.25,gp=gpar(lwd=10))
Run Code Online (Sandbox Code Playgroud)

我想让上半部分为蓝色,下半部分为白色.

谢谢您的帮助!

Jos*_*ien 5

使用grid.polygon()和一些基本的三角函数,你可以定义一个能够做到这一点的函数

需要采取一些挑剔的措施,以便在视口为非正方形时填充的半圆不会扭曲.为了以与使用的规则相匹配的方式实现这一点grid.circle(),我将原点设置为"npc"单位,将圆半径设置为"snpc"单位.(有关"npc"and 的含义的更多信息"snpc",请参见?unitvignette("grid")):

library(grid)

filledSemiCircle <- function(x_origin, y_origin, radius, fillcolor, top=TRUE) {
    theta <- seq(0, pi, length = 100)
    if(!top) theta <- theta + pi     ## To fill the bottom instead
    x <- unit(x_origin, "npc") + unit(cos(theta) * radius, "snpc")
    y <- unit(y_origin, "npc") + unit(sin(theta) * radius, "snpc")
    grid.polygon(x, y, gp = gpar(fill = fillcolor))
}

filledSemiCircle(0.5, 0.5, 0.25, "dodgerblue")
filledSemiCircle(0.5, 0.5, 0.25, "gold", top=FALSE)
grid.circle(x = .5, y=.5, r=.25,gp=gpar(lwd=10))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述