2016-05-16 118 views
0

使用ggplot,我顯示了一系列點,三階多項式擬合(具有相應的公式和R2值)以及用於比較的標準化函數。動態標籤位置stat_poly_eq和ggplot2

ggplot(aes(x = saturation, y = time_norm_ratio), data = tmp) + geom_point(aes(color = id)) + 
    geom_line(aes(x=saturation,y=BPR_time_norm_ratio,color="BPR function")) + geom_smooth(aes(color = id), method= "lm", se = F, formula=y ~ poly(x, 3, raw=TRUE)) + 
    ggtitle("Saturation time delay curve") + 
    labs(x="Saturation",y="Time (t/to)") + 
    stat_poly_eq(aes(label=paste(..eq.label..,..adj.rr.label.., sep = "~~~")),geom="label",alpha=0.33,formula=(y ~ poly(x, 3, raw=TRUE)),label.y=2.5,parse=TRUE) + 
    theme(text=element_text(size=20)) 

給予我:

Output

然而,當我繪製了一系列文件,我想對劇情規範stat_poly_eq框的位置。它目前固定在y = 2.5 (label.y=2.5)。是否可以相對於y軸動態地設置y位置?

我試過如下:

label.y=(0.75(tmp.time_norm_ratio) 

,但是這導致:

Error in ggplot2::layer(stat = StatPolyEq, data = data, mapping = mapping, : 
    attempt to apply non-function 
+1

認爲這個問題是有可能與'''0.75(tmp.time_norm_ratio)''',這應該是'''0.75 * TMP $ time_norm_ratio'''呢?可能還需要一些聚合,比如'''label.y = 0.75 * max(tmp $ time_norm_ratio)'''。 – DGKarlsson

+0

正確!隨意發佈作爲答案 – LearningSlowly

回答

1

(註釋轉換爲回答)

認爲這個問題是有可能與

0.75(tmp.time_norm_ratio) 

這應該是

0.75 * tmp$time_norm_ratio 

呢?可能需要一些聚集,以及像

label.y = 0.75 * max(tmp$time_norm_ratio)