使用 pie
R 中的函数,标 checkout 现在饼图之外。有没有办法在饼图的每个切片内放置标签?
f=table(LETTERS[c(rep(1,7),rep(2,10),rep(3,5))])
pie(f)
它显示了如何使用 ggplot
执行此操作这里place-labels-on-pie-chart .有没有办法用 pie
来做?功能?编辑:为了回应有关使用饼图的一些评论,我想与他们详细说明我的意图。我实际上只是使用饼图作为散点图矩阵的一部分来可视化整个数据框以进行回归。矩阵设置如下:
背景颜色较深的样本相关数表示绝对相关性更高。
看,我需要一些对角线上的因素并决定使用饼图。无论如何,我决定不使用标签并取消所有轴标签。我宁愿为更大的饼切片使用更深的颜色......所以也许这可能是一种显示信息的糟糕方式,但我认为它适用于因子变量,显示观察如何在因子水平上成比例比条形图更好。下图描述了
lars
中的糖尿病数据集包裹。最佳答案
我认为没有一种简单的方法可以做到这一点,因为标签位置是硬编码的 - 看看最后
body(pie)
if (!is.na(lab) && nzchar(lab)) {
lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y)
text(1.1 * P$x, 1.1 * P$y, labels[i], xpd = TRUE,
adj = ifelse(P$x < 0, 1, 0), ...)
}
}
title(main = main, ...)
invisible(NULL)
}
但是你可以覆盖程序的这一部分
# create a new pie function to save overwriting original
newpie <- pie
# Tweak the label positions - changed 1.1 to 0.7
# also commented out the lines function - so that the
# small lines next to the labels are not plot
newlbs <- quote(if (!is.na(lab) && nzchar(lab)) {
#lines(c(1, 1.05) * P$x, c(1, 1.05) * P$y)
text(0.7 * P$x, 0.7 * P$y, labels[i], xpd = TRUE,
adj = ifelse(P$x < 0, 1, 0), ...)
})
# add in the new lines of code - trial and error found the right position
body(newpie)[[22]][[4]][[7]] <- newlbs
newpie(f)
所以看起来工作量很低,但它到达那里,你需要做更多的工作来调整文本的角度或格式。
(可能结果是有理由这样做)
关于R - 在饼图中放置标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25880110/