繁体   English   中英

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

[英]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)

饼图示例

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

在此输入图像描述

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

并根据您的需要调整所有内容。

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

对不起,如果我有选择,我会评论而不是回答。

您可以使用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输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM