【发布时间】:2013-04-17 13:02:47
【问题描述】:
我正在尝试使用 ggplot 生成多面饼图,但在将文本放置在每个切片的中间时遇到了问题:
dat = read.table(text = "Channel Volume Cnt
AGENT high 8344
AGENT medium 5448
AGENT low 23823
KIOSK high 19275
KIOSK medium 13554
KIOSK low 38293", header=TRUE)
vis = ggplot(data=dat, aes(x=factor(1), y=Cnt, fill=Volume)) +
geom_bar(stat="identity", position="fill") +
coord_polar(theta="y") +
facet_grid(Channel~.) +
geom_text(aes(x=factor(1), y=Cnt, label=Cnt, ymax=Cnt),
position=position_fill(width=1))
输出:
应该调整geom_text的哪些参数,以便将数字标签放置在饼图切片的中间?
相关问题是 Pie plot getting its text on top of each other,但它不处理带有 facet 的大小写。
更新:按照上面问题中的 Paul Hiemstra 建议和方法,我将代码更改如下:
---> pie_text = dat$Cnt/2 + c(0,cumsum(dat$Cnt)[-length(dat$Cnt)])
vis = ggplot(data=dat, aes(x=factor(1), y=Cnt, fill=Volume)) +
geom_bar(stat="identity", position="fill") +
coord_polar(theta="y") +
facet_grid(Channel~.) +
geom_text(aes(x=factor(1),
---> y=pie_text,
label=Cnt, ymax=Cnt), position=position_fill(width=1))
正如我所料,调整文本坐标是绝对的,但它需要在构面数据内:
【问题讨论】:
-
我对这个问题的最新解决方案是尽可能避免使用饼图 :-)
标签: r ggplot2 visualization pie-chart facet