如何将标签放置在离饼图更远的地方

How to place the labels further from 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 labels
pie(slices,labels = lbls, col=rainbow(length(lbls)), radius=.2)

您可以使用 text() 手动放置文本,并通过 rep("",times) 创建标签。

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

提供一些代码,

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))

并将所有内容对齐到您想要的位置。

如果您只想创建一个饼图,这是一个选项,但正确设置所有这些坐标可能会非常令人沮丧..

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

可以修改pie-函数行50-54并另存为新函数pie2

类型

pie

将行 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.05

  lines(c(1, 1.35) * P$x, c(1, 1.35) * P$y)

更改系数(默认值 = 1.1

  text(1.5 * P$x, 1.5 * P$y, labels[i], xpd = TRUE, 
       adj = ifelse(P$x < 0, 1, 0), ...)

现在定义 pie2 和 运行 新函数

pie2(slices,labels = lbls, col=rainbow(length(lbls)), radius=.2)

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

# R version 3.2.2
install.packages("ggplot2") 
library("ggplot2")
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
df = data.frame(slices = slices,labels =  lbls)
ggplot(df,aes(x = factor(1),fill = labels))+
        geom_bar(width = 1)+
        coord_polar(theta = "y")+
        theme(axis.title = element_blank())