饼图中的图例未正确显示

Legend in piechart not appearing correctly

我想将我的饼图向左移动,因为图例太近了,因此它会在我的图例 (Micro-mammifères) 中切割文字,但我不知道该怎么做。 我也确实有重叠的百分比值,我希望能够正确读取它们。我试图增加半径但没有用,并使图例消失了。

slices <- c(62,6,1,0.5,13,1,0.4,14,0.1,2)
pct <- c(62,6,1,0.5,13,1,0.4,14,0.1,2)
lbls <- paste(pct,"%",sep=" ")
lgd <- c("Elan", "Renne","Castor", "Chevreuil", "Lièvre", "Renard", "Sanglier","Porc", "Mustélidés", "Micromammifères")
cols = brewer.pal(n = length(slices), name = 'Set3')

pie(slices,labels = lbls, col=cols)
legend(1.1,0.6,legend=lgd,cex=0.9, bty = "n", fill = cols)

在 base R 中不鼓励使用饼图(请参阅手册页 ?pie),因此它们不包含许多有用的选项。我们可以通过减小标签的大小、删除百分号和更改绘图的大小来更接近您想要的 window。我只是包括更改后的代码:

pct <- c("62", "6", "1", ".5", "13", "1", ".4", "14", ".1", "2")
dev.new(width=10, height=8)
pie(slices, labels=pct, col=cols, cex=.75)
title(xlab="Percentage of Total", line=0)
legend("topright", legend=lgd, bty="n", fill=cols)

plotrix 和 ggplot 中还有一些饼图的其他实现,可能会让您更接近您想要的效果。

pie() 函数的主要问题是它总是在绘图区域的中间绘制饼图。您可以像@dcarlson 那样使该区域成为矩形,以便在边缘留出空间,但是您将在左侧有一个大的白色 space。

为避免这种情况,您可以使用layout()函数将绘图区域分成两块,并将馅饼放在左边的块中。例如,

dev.new(width=10, height=6)
layout(matrix(1:2, nrow=1), widths = c(1,0.666))
pie(slices,labels = lbls, col=cols)
plot.new()
legend("center",legend=lgd,cex=0.9, bty = "n", fill = cols)

根据我的口味,这给出的情节仍然有太多的白色space,但至少它是平衡的:

您可以尝试调整尺寸来改善外观。您可能还想调整边距,例如par(mar = c(0,0,0,0)) 将所有边距减少为零。