如何从饼图中进一步放置标签

时间:2015-10-21 12:25:10

标签: 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 labels
pie(slices,labels = lbls, col=rainbow(length(lbls)), radius=.2)

pie chart example

3 个答案:

答案 0 :(得分:5)

您可以修改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)

enter image description here

答案 1 :(得分:3)

您可以手动放置带有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))

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

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

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

答案 2 :(得分:0)

您可以使用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())

ggplot output