2016-06-16 14 views
1

まず、私は初心者のRユーザーです。私は私のグラフにR-squareとp-valueを追加したいと思います。しかし、1行にカンマを区切ります。私が使用しようとしているコードが添付されています。2つの注釈ラベルをコンマで区切ることはできません

Error: Aesthetics must be either length 1 or the same as the data (1): label

ありがとう:

ggplot(data, aes(x,y))+ 
geom_point(shape=1,size=4)+ 
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+ 
annotate("text",x=30,y=0.45,label=c("italic(r^{2}==0.151)","p==0.226"),parse=TRUE)+ 
theme_bw(base_size = 12) 

はしかし、私はこのエラーを受け取りました!

答えて

2

複数の式を1つの式として解析する場合は、pasteを使用して式を取得し、1行に入れることができます。もう1つの答えで説明したように、今ではannotateに2つの異なる式が与えられていますが、x、y座標の1つのセットだけがエラーを引き起こしています。コンマなし

、単一の式が

paste("italic(r^{2}) ==", 0.151, "~p==.226")

のようになります。これは、あなたがannotateであなたのラベルとして置くものです。追加のチルダは、第1式と第2式の間にスペースを作成します。

コンマを含めるには、plotmathにlistが必要です。プロットマスでは、listはカンマで区切られたリストを意味します(利用可能なすべての機能については?plotmathを参照)。基本的には、式全体をlistpasteにラップすることを意味します。

paste("list(italic(r^{2}) ==", 0.151, ", p==.226)") 

だから、あなたの注釈コードが

+ annotate("text", x=30, y=0.45, label=paste("list(italic(r^{2}) ==", 0.151, ", p==.226)"), parse=TRUE) 
+0

いいだろう。なぜ私はそれを働かせることができなかったのですか?カンマを追加すると、ggplotは黙って失敗し続けました。 –

+0

ああ、文字配列の代わりにリストのため?なぜそれが違いますか?奇妙な –

+0

@MikeWiseうん、plotmathの 'list'はコンマで区切られたリストを許可するものです。それがなければ、エラーが出るか、コンマが得られません。 – aosmith

0

これは機能しますが、カンマが数式パーサーを混乱させるため、カンマが得られません。

library(ggplot2) 
set.seed(123) 
n <- 100 
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n)) 
ggplot(data)+ 
    geom_point(aes(x,y),shape=1,size=4)+ 
    stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+ 
    annotate("text",x=c(30,37),y=c(0.45,0.43),label=c("italic(r^{2}==0.151)","p==0.226"), 
                      parse=TRUE) + 
    theme_bw(base_size = 12) 

ここにグラフがあります。

enter image description here

私はそれらを調整しますが、それは次のようになり、あなたがそれをあなたのannotateコマンドの長さ2のベクトルを与えているので、あなたの誤差が約来てますが、xyパラメータは、1の長さを持っています私が思うには、1本のラインとして優れている。この降伏

library(ggplot2) 
set.seed(123) 
n <- 100 
data <- data.frame(x=(40+10*rnorm(n)),y=-0.2+0.5*rnorm(n)) 
ggplot(data)+ 
    geom_point(aes(x,y),shape=1,size=4)+ 
    stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+ 
    annotate("text",x=30,y=0.45,label="italic(r^{2}==0.151)", parse=T) + 
    annotate("text",x=36,y=0.43,label=", p==0.226",parse=F) + 
    theme_bw(base_size = 12) 

はコンマはあなたがTHIのように2つの annotate層にそれを破ることができます取得するには

enter image description here

しかし、私は個人的には気にしすぎだと思います。カンマなしで移動します。エスケープシーケンスや何かを使って数式の中に入れる方法があるかもしれませんが。

関連する問題