这是我的代码
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等)?
这是我在绘图时得到的图像
答案 0 :(得分:2)
虽然在加载fixInNamespace
包之前可以使用函数spie
修改caroline
函数,但我更喜欢修改函数的副本。
## 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
函数都依赖于.spie
包中未导出的"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)