2011-09-16 10 views
1

コードに何が表示されないのですか?ggplot2でエラーが発生しました

set.seed(12345) 
require(ggplot2) 
AData <- data.frame(Glabel=LETTERS[1:7], A=rnorm(7, mean = 0, sd = 1), B=rnorm(7, mean = 0, sd = 1)) 
TData <- data.frame(Tlabel=LETTERS[11:20], A=rnorm(10, mean = 0, sd = 1), B=rnorm(10, mean = 0, sd = 1)) 
i <- 2 
j <- 3 
p <- ggplot(data=AData, aes(AData[, i], AData[, j])) + geom_point() + theme_bw() 
p <- p + geom_text(aes(data=AData, label=Glabel), size=3, vjust=1.25, colour="black") 
p <- p + geom_segment(data = TData, aes(xend = TData[ ,i], yend=TData[ ,j]), 
        x=0, y=0, colour="black", 
        arrow=arrow(angle=25, length=unit(0.25, "cm"))) 
p <- p + geom_text(data=TData, aes(label=Tlabel), size=3, vjust=1.35, colour="black") 

コードの最後の行でエラーが発生します。この問題を理解する方法を教えてください。前もって感謝します。

+0

' i'を経由して、何をしたいんや。また、通常は 'aes()'のカラム名を参照します** **データオブジェクトのサブセットではありません。だから、「私」と「私」とは何ですか、あなたは本当に何をしようとしていますか?現時点では、あなたは何をすべきかを言わずにコードレビューを求めています。 –

+0

オタクを指摘してくれてありがとう。私はそれを修正しました。感謝 – MYaseen208

+0

+1再現性のため –

答えて

2

私はあなたがやろうとしているものは考えているが、あなたはマッピングで新しいxとyの変数をマッピングしていないので、失敗した行は、最後の行です。 geom_text()にはxとyの座標が必要ですが、のggplotpからxとyをとりますが、データの長さはわずか7行ですが、Tlabelの長さは10です。私はあなたがx = Aとy = Bのプロットを意味すると仮定します。TData?もしそうなら、これは動作します:

​​
+0

あなたの助けに感謝ギャビンシンプソンありがとう。 – MYaseen208

2

(これはggplotメーリングリストの良い答えを得る可能性があります)

をあなたはバイプロットのいくつかの種類...のルートを表示しようとしているように見えますあなたの問題は、ggplotのイディオムに違反していることです.ggplotは、データの範囲と一貫性のある方法で変数を指定したいと考えています。

は多分これはコードの塊で定義されていないj` `希望列の名前を代入し、いくつかのaes_string策略...

varnames <- colnames(AData)[-1] 
v1 <- varnames[1] 
v2 <- varnames[2] 
p <- ggplot(data=AData, 
      aes_string(x=v1, y=v2)) + geom_point() + theme_bw() 
## took out redundant 'data', made size bigger so I could see the labels 
p <- p + geom_text(aes(label=Glabel), size=7, vjust=1.25, colour="black") 
p <- p + geom_segment(data = TData, aes_string(xend = v1, yend=v2), 
        x=0, y=0, colour="black", 
        arrow=arrow(angle=25, length=unit(0.25, "cm"))) 
## added colour so I could distinguish this second set of labels 
p <- p + geom_text(data=TData, 
        aes(label=Tlabel), size=10, vjust=1.35, colour="blue") 
+0

PSラベルの第2のセットを矢印と同じ方向に置き換えるといいでしょう。そのため、それらは常に矢印の前にありますが、それを行うための本当に素早い方法はわかりません。 –

+0

はい私はbiplotを表示しようとしています。素敵な答えをありがとう。再度、感謝します。 – MYaseen208

+0

@Ben Bolker:矢印のラベルの方向についてのクールなアイデア。 – MYaseen208

関連する問題