5
这是问题在这里的延续:Create non-overlapping stacked area plot with ggplot2直接添加标签,GGPLOT2 geom_area图表
我有下面的代码创建了一个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))
我是全新的,以directlabels
并没有真正知道如何让标签对齐到具有相同颜色的区域图的右侧。
感谢您的回答。我需要弄清楚直接标签,因为我不知道这种方法有多普遍。 – Idr
@csgillespie,这很有用,谢谢。这里我使用的语法(另一个df):''+ geom_text(data = subset(df,Year ==“2012”),aes(x = Year,y = cumsum(value),label = variable),vjust = 6 ,hjust = -.2,size = 4)'',在那里我发现它很容易得到正确的vjust和hjust参数。我的意思是强调你可以将'cumsum'传递给''aes()'',这是我通过试验和错误发现的。对于右侧的图例,设置''+ guides(fill = guide_legend(reverse = TRUE))''来获得与图像相同顺序的颜色是很有用的。你想更新已弃用的“opts”吗? – PatrickT
为了捕获数据帧的最后一个元素(在上面的注释中,“OP中的06-at-the-codfish-ball”和我上面注释中的“2012”),可以使用''tail()''函数与参数'1',例如''尾巴(df2.1 $ Year,1)'' – PatrickT