R 如何将标签放置在离饼图更远的位置

R 如何将标签放置在离饼图更远的位置,r,pie-chart,R,Pie Chart,在R中,如何将标签放置在离饼图更远的位置 slices <- c(10, 12, 4, 16, 8) lbls <- c("US", "UK", "Australia", "Germany", "France") pct <- round(slices/sum(slices)*100) lbls <- paste(lbls, pct) # add percents to labels lbls <- paste(lbls,"%",sep="") # ad % to

在R中,如何将标签放置在离饼图更远的位置

slices <- c(10, 12, 4, 16, 8)
lbls <- c("US", "UK", "Australia", "Germany", "France")
pct <- round(slices/sum(slices)*100)
lbls <- paste(lbls, pct) # add percents to labels
lbls <- paste(lbls,"%",sep="") # ad % to labels
pie(slices,labels = lbls, col=rainbow(length(lbls)), radius=.2)

slices您可以使用text()手动放置文本,并通过rep(“,次)不创建标签

但我同意,饼图是可视化数据的糟糕方式

为了提供一些代码

pie(slices,labels = rep("",5), col=rainbow(length(lbls)), radius=.8,lty=4)
text(0.9,0.6,"UK")
lines(c(0.6,0.85),c(0.45,0.55))
并将所有内容对齐到您想要的位置

如果您只想创建一个饼图,这是一个选项,但要获得所有这些坐标可能会非常令人沮丧


抱歉,如果我有选择的话,我会评论而不是回答。

您可以修改
饼图
-功能行
50-54
,并将其保存为新功能
pie2

类型

将行
50-54
更改为

if (!is.na(lab) && nzchar(lab)) {
  lines(c(1, 1.35) * P$x, c(1, 1.35) * P$y)
  text(1.5 * P$x, 1.5 * P$y, labels[i], xpd = TRUE, 
       adj = ifelse(P$x < 0, 1, 0), ...)
}
更改系数(默认值=
1.1


您可以使用
ggplot
形成饼图。这将使标签作为图例与饼图分开

#R版本3.2.2
安装程序包(“ggplot2”)
图书馆(“ggplot2”)

切片只是不使用饼图。条形图的信息量要大得多。你是说没有办法吗?这只是一个例子。。。我使用饼图只是为了图表的图例,但我仍然想格式化饼图。可能有一种方法可以做到这一点,但饼图只是一种非常糟糕的数据可视化方法。记住这个建议:不错!正如我所说,我主要使用的是。饼图只是我的图例…几乎,但答案是可以接受的,如果我可以计算文本和线条点的位置…这实际上不是问题。。。从中查看正确答案。但是谢谢你的尝试。
if (!is.na(lab) && nzchar(lab)) {
  lines(c(1, 1.35) * P$x, c(1, 1.35) * P$y)
  text(1.5 * P$x, 1.5 * P$y, labels[i], xpd = TRUE, 
       adj = ifelse(P$x < 0, 1, 0), ...)
}
  lines(c(1, 1.35) * P$x, c(1, 1.35) * P$y)
  text(1.5 * P$x, 1.5 * P$y, labels[i], xpd = TRUE, 
       adj = ifelse(P$x < 0, 1, 0), ...)
pie2(slices,labels = lbls, col=rainbow(length(lbls)), radius=.2)