gpt4 book ai didi

r - 将直接标签添加到 ggplot2 geom_area 图表

转载 作者:行者123 更新时间:2023-12-04 18:48:17 26 4
gpt4 key购买 nike

这是这里问题的延续:Create non-overlapping stacked area plot with ggplot2

我有一个由以下代码创建的 ggplot2 面积图。我想要来自 names 的标签在图形的右侧对齐。我想 directlabels可能有用,但我愿意尝试任何最聪明的方法。

require(ggplot2)
require(plyr)
require(RColorBrewer)
require(RCurl)
require(directlabels)

link <- getURL("http://dl.dropbox.com/u/25609375/so_data/final.txt")
dat <- read.csv(textConnection(link), sep=' ', header=FALSE,
col.names=c('count', 'name', 'episode'))


dat <- ddply(dat, .(episode), transform, percent = count / sum(count))

# needed to make geom_area not freak out because of missing value
dat2 <- rbind(dat, data.frame(count = 0, name = 'lane',
episode = '02-tea-leaves', percent = 0))

g <- ggplot(arrange(dat2,name,episode), aes(x=episode,y=percent)) +
geom_area(aes(fill=name, group = name), position='stack') + scale_fill_brewer()

g1 <- g + geom_dl(method='last.points', aes(label=name))

enter image description here

我是新来的 directlabels并不确定如何让标签与图形的右侧对齐,并且颜色与区域相同。

最佳答案

您可以使用简单的 geom_text添加标签。首先,对数据集进行子集化以获得最终的 x 值:

dd=subset(dat, episode=="06-at-the-codfish-ball")

然后按因子级别对数据框进行排序:
dd = dd[with(dd, order(name, levels(dd$name))),]

然后计算出用于绘图的累积百分比:
dd$cum = cumsum(dd$percent)

然后只需使用标准 geom_text称呼:
g + geom_text(data=dd, aes(x=6, y=cum, label=name))

哦,您可能希望调整 x 轴标签的角度以避免过度绘制:
g + opts(axis.text.x=theme_text(angle=-25, hjust=0.5, size = 8))



enter image description here

关于r - 将直接标签添加到 ggplot2 geom_area 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com