我正在使用base
R绘图函数来生成饼图,我想更改每个饼图段轮廓的线条粗细。 ?pie
似乎表示我可以添加可选图形参数,但添加lwd=
似乎不起作用。任何人都有任何关于我如何能够做到这一点的线索。我还不熟练在ggplot
中制作饼图,并希望坚持使用base
R绘图(如果可能的话)。
library(RColorBrewer)
x1 <- data.frame(V1 = c(200, 100)) ## generate data
row.names(x1) <- c("A", "B")
x1$pct <- round((x1$V1/sum(x1$V1))*100, 1)
lbls1 <- paste(row.names(x1), "-(",x1$pct, '%)', sep='') ## add some informative stuff
pie(x1$V1, labels=lbls1, col=tail(brewer.pal(3, 'PuBu'), n=2),
main=paste('My 3.1415'), cex=1.1, lwd= 3)
注意lwd=
不会像在其他基础绘图中那样增加线条粗细。
任何人都有线索吗?
答案 0 :(得分:7)
polygon
内lines
和pie
的来电未通过...
或lwd
...
polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i],
border = border[i], col = col[i], lty = lty[i])
P <- t2xy(mean(x[i + 0:1]))
lab <- as.character(labels[i])
if (!is.na(lab) && nzchar(lab)) {
lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y)
....
您可以在拨打par(lwd = 2)
pie
(或其他)来解决此问题
即
# save original settings
opar <- par(no.readonly = TRUE)
par(lwd = 2)
pie(x1$V1, labels=lbls1, col=tail(brewer.pal(3, 'PuBu'), n=2),
main=paste('My 3.1415'), cex=1.1)
par(lwd = 3)
# reset to original
par(opar)
答案 1 :(得分:6)
目前,执行实际绘图的pie
内的函数是polygon
,以下是它的调用方式:
polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i],
border = border[i], col = col[i], lty = lty[i])
请注意,没有lwd
参数,更严重的是没有...
参数来接受可能没有硬编码的参数。
创建一个新的pie2函数。首先输入馅饼,复制代码并进行一些更改:
pie2 <-
function (x, labels = names(x), edges = 200, radius = 0.8, clockwise = FALSE,
init.angle = if (clockwise) 90 else 0, density = NULL, angle = 45,
col = NULL, border = NULL, lty = NULL, main = NULL, lwd=1,...)
{
................
polygon(c(P$x, 0), c(P$y, 0), density = density[i], angle = angle[i],
border = border[i], col = col[i], lty = lty[i], lwd=lwd )
.................
}
pie2(x1$V1, labels=lbls1, col=tail(brewer.pal(3, 'PuBu'), n=2),
main=paste('My 3.1415'), cex=1.1, lwd=5)