代码之家  ›  专栏  ›  技术社区  ›  Tal Galili

_R网格:如何创建一个填充颜色的多边形的一半?

  •  1
  • Tal Galili  · 技术社区  · 15 年前

    (这个问题可能太难了,也许不值得麻烦去解决——但是,如果有一个简单的解决方案——我会好奇地知道)

    假设我创建了一个图像(使用网格包),如下所示:

    require(grid)
    grid.newpage()
    grid.polygon(x=c((0:4)/10, rep(.5, 5), (10:6)/10, rep(.5, 5)),
                 y=c(rep(.5, 5), (10:6/10), rep(.5, 5), (0:4)/10),
                 id=rep(1:5, 4),
                 gp=gpar(fill=1:5))
    

    但是现在,如果我希望一些多边形只是部分填充(假设一个填充1/3,另一个填充1/2,另一个完全填充颜色),那么它看起来就像一杯部分填充的水。

    我想象它可以在构建多边形的时候完成,问题是,假设我想要的东西只是基于我给它的比例来计算新的多边形,那该怎么做呢?

    我提出这个问题的原因是想在徽标图上显示另一层信息(请参阅seqlogo包中的函数seqlogo)。

    谢谢。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Richie Cotton Joris Meys    14 年前

    你可以通过画两次来部分填充一个多边形:首先用轮廓画出整个多边形,但不填充,然后再画填充。通过一个简单的矩形示例,您可以更容易地看到这一点。

    x <- c(left = 0.25, right = 0.75)
    y <- c(bottom = 0.1, mid = 0.6, top = 0.9)
    
    grid.newpage()
    grid.polygon(x =  rep(x[c("left", "right", "right", "left")], 2),
                 y =  y[rep(c("bottom", "top", "bottom", "mid"), each = 2)],
                 id = rep(1:2, each = 4),
                 gp = gpar(fill = c(NA, "blue")))