7

これは、ここでの質問の続きです。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))

ここに画像の説明を入力してください

私はまったく新しいdirectlabelsので、ラベルを領域と同じ色でグラフの右側に揃える方法がよくわかりません。

4

1 に答える 1

8

simplegeom_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))

グラフ

ここに画像の説明を入力してください

于 2012-05-01T08:24:14.617 に答える