2011-06-26 24 views
6

私は次のように私のコードがあるdirectlabelsとggplot2はどのように使用できますか?

enter image description here

私はシンプルなプロット(私はggplot2を使用しています)を持っている2つの行をラベル付けするdirectlabelsパッケージを使用しようとしている。しかし

# libraries 
library(ggplot2) 
library(directlabels) 

# Variables 
A = array(1000,100) 
F = seq(length=100, from=0, by=10) 
f = array(5,100) 

# make data frame 1 
df <- data.frame(X = F * f/A, Y = F/A) 

# plot line 1 
p = ggplot(df, aes(x=X,y=Y)) 
p = p + geom_line(colour="#56B4E9") 

# make data frame 2 
df1 <- data.frame(X = F * f * 2/A, Y = F/A) 

# plot line 2 
p = p + geom_line(aes(x=X,y=Y), data=df1, colour="#56B4E9")  

# label line 
direct.label(p, 'last.points') 

次のエラーメッセージが表示されます。

Error in direct.label.ggplot(p, "last.points") : 
    Need colour aesthetic to direct label. 

私はいくつかの引数を追加しようとしましたdirect.label()の機能には影響しますが、私はどのような美的議論を使用すべきか理解していません。

+0

いくつかの5年後:あなたのための答えの仕事をしましたか? – MERose

答えて

13

代わりに2つのデータフレームを使用しての、あなたがそれらを組み合わせて、溶融可能性:

library(ggplot2) 
library(directlabels) 

# Variables 
A = array(1000,100) 
F = seq(length=100, from=0, by=10) 
f = array(5,100) 

# make data frame 1 
df <- data.frame(X = F * f/A, Y = F/A) 

# make data frame 2 
df1 <- data.frame(X = F * f * 2/A, Y = F/A) 

# merge both dataframes 
df2 <- merge(df, df1, by = "X") 

# melt them 
df2m <- melt(df2, id = "X") 

# plot 
p2 <- ggplot(df2m, aes(x = X, y = value, col = variable)) + 
    geom_line() + 
    scale_color_manual(values = rep("#56B4E9", 2)) 

direct.label(p2, 'last.points') 

あなたが直接ラベルをしたい場合もdirectlabels 2.0から新しいgeom_dlを使用することができますが、色の美学を使用したくありません:

install.packages("directlabels") 
ggplot(df2m, aes(x = X, y = value))+ 
    geom_line(aes(group=variable))+ 
    geom_dl(aes(label=variable),method="last.points") 

labeled ggplot

+0

あなたの答えに感謝します。私は現在、ループを使って多くの行を生成しています。同じデータフレームのデータをすべて必要とする問題ですか?私は、問題を2行で表示するのが最も簡単だと思った。振り返ってみると、問題を混乱させる可能性があります。行を追加した後にラベルを追加できますか? – djq

関連する問題