删除 R Spie 图中的标签边框

标签 r plot label

这是我的代码

require(caroline)
   x <- c(100, 90, 80, 15, 120, 25)
   y <- c(120, 120, 60, 10, 120, 15)
   names(x) <- c("Mark_1", "Mark_2", "Mark_3", "Mark_4", "Mark_5", "Mark_6")
   spie.sales <- spie(x, y,col=rainbow(length(x)),bg=c("black", "violetred1", 
                                                       "cornsilk","red", "green", "white"))

如何删除标签周围的边框(Mark_1、Mark_2 等)?

这是我在绘图时得到的图像 enter image description here

最佳答案

虽然可以在加载 caroline 包之前使用函数 fixInNamespace 修改 spie 函数,但我更喜欢修改而是函数的副本。

## Create copy of spie
spie2 <- spie

此外,您还可以保留绘制矩形的选项。因此,一个新参数 labRects 被添加到新函数中。当该对象的值为FALSE时,不会绘制矩形。当TRUE时,生成原始图。

## Add new argument to spie2 function
formals(spie2) <- c(formals(spie), labRects = FALSE)

然后找到函数body的哪一部分需要更改并更改它

## Assign new code into the appropriate part of the body of the function
body(spie2)[[9]][[4]][[8]][[3]][[2]] <- substitute({
    if(labRects) {
        grid.rect(x = cos(angleAnn) * maxx, y = sin(angleAnn) * maxx, 
            width = 1.5 * stringWidth(x$namesSlices[i]), height = 1.5 * 
            stringHeight(x$namesSlices[i]), default.units = "native", 
            gp = gpar(col = col[i], fill = "white", lwd = 2))
    }
})

因为,正如 Zbynek 所说,spie 函数和新的 spie2 函数都依赖于来自"caroline" 包中,我们需要更改 spie2 的环境以匹配 spie 的环境,以允许访问 .spie 函数。

## Change environment of spie2 to "caroline"
environment(spie2) <- environment(spie)

## ...and plot
spie.sales <- spie2(x, y,col=rainbow(length(x)),
  bg=c("black", "violetred1", "cornsilk","red", "green", "white"),
  labRects = FALSE)

enter image description here

关于删除 R Spie 图中的标签边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21374097/

相关文章:

c# - 将控件垂直和水平放置在其容器的中心

HTML "for"属性的 WPF 标签对应物

r - 是否可以在 R 中使用 sendmail 抄送收件人?

r - 在 macOS Sierra 10.12.6 和 R 版本 3.4.1 上安装 RGtk2

python - 在 Python 的 Line2D 中使用属性 "figsize"的等价物是什么

python - 如何在 matplotlib 中使轴透明?

html - 如果选中复选框,则突出显示标签并在范围内更改颜色

r - AdaptIntegrate 与集成的性能

r - 检查具有值的行是否属于 R 中的数据框

python - 从一组点 PYTHON 绘制拉格朗日多项式