如何将标签放置在离饼图更远的地方
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())
如何在 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())