我正在尝试使用这种方法在堆积条形图上放置标签(但如果现在有更好的方法,我会对所有情况持开放态度):
这是我原来的情节:
dat <- data.frame(with(mtcars, table(cyl, gear)))
ggplot(dat, aes(x = gear, fill = cyl)) +
geom_bar(aes(weight=Freq), position="stack") +
geom_text(position = "stack", aes(x = gear, y = Freq,
ymax = 15, label = cyl), size=4)
Run Code Online (Sandbox Code Playgroud)

这是我尝试在每个填充部分中居标签:
dat2 <- ddply(dat, .(cyl), transform, pos = cumsum(Freq) - 0.5*Freq)
library(plyr)
ggplot(dat2, aes(x = gear, fill = cyl)) +
geom_bar(aes(weight=Freq), position="stack") +
geom_text(position = "stack", aes(x = gear, y = pos,
ymax = 15, label = cyl), size=4)
Run Code Online (Sandbox Code Playgroud)

如何将每个填充部分中的标签居中?
Mar*_*ius 10
这里也有一些多余的ddply动作发生的事情与这一个,因为我知道我想要的解决方案,但遇到了麻烦保持与位置对齐的频率,但我认为该算法用于查找组中点值得发帖:
group_midpoints = function(g) {
cumsums = c(0, cumsum(g$Freq))
diffs = diff(cumsums)
pos = head(cumsums, -1) + (0.5 * diffs)
return(data.frame(cyl=g$cyl, pos=pos, Freq=g$Freq))
}
dat3 = ddply(dat, .(gear), group_midpoints)
ggplot(dat3, aes(x = gear, fill = cyl)) +
geom_bar(aes(weight=Freq), position="stack") +
geom_text(position = "identity", aes(x = gear, y = pos, ymax = 15, label = cyl), size=4)
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
5411 次 |
| 最近记录: |