2016-05-22 12 views
1

における変数としてティック?使用距離はggplot関数内の変数としてy軸に目盛りとの間の距離を使用する方法はありggplot2

Iは、そのy座標グラフのY軸スケールに「応答」することができるアノテーションをプロットします。

以下の例では、var1を、ユーザー定義の定数ではなく、特定のグラフのパラメータから取得した連続するy軸ティック間の距離としたいと思います。

データ:

EXse2<- data.frame(wk=c(1,2), EX=c(4.457143, 2.580952), se=c(0.4209481,0.5519333)) 

コード:

var1<- 0.1 
labEX<- "\u002A\u002A" 
library(ggplot2) 
ggplot(EXse2, aes(x=factor(wk), y=EX, group=1))+ 
    geom_errorbar(aes(ymin=EX-se, ymax=EX+se), width=.2, size=1)+ 
    geom_line(size=1)+ 
    geom_point(size=2)+ 
    annotate("text", label=labEX, x=1.5, y=(mean(EXse2$EX[1:2])+var1))+ 
    xlab("period")+ 
    ylab(expression(bar(EX)))+ 
    theme(
     panel.background=element_blank(), 
     panel.border = element_blank(), 
     panel.grid.minor.x=element_blank(), 
     panel.grid.major.x=element_blank(), 
     panel.grid.minor.y = element_line(colour = "#d9d9d9"), 
     panel.grid.major.y = element_line(colour = "#bfbfbf"), 
     axis.line = element_line() 
     ) 

答えて

0

あなたはggplot_buildとダニの距離を抽出し、最初にプロットするために作成することによって、これを達成して、注釈を追加することができます。

library(ggplot2) 

EXse2<- data.frame(wk=c(1,2), EX=c(4.457143, 2.580952), se=c(0.4209481,0.5519333)) 
labEX<- "\u002A\u002A" 

#first, put your plot in p1 
p1 <- 
ggplot(EXse2, aes(x=factor(wk), y=EX, group=1))+ 
    geom_errorbar(aes(ymin=EX-se, ymax=EX+se), width=.2, size=1)+ 
    geom_line(size=1)+ 
    geom_point(size=2)+ 
    # I HAVE REMOVED THE ANNOTATE HERE 
    xlab("period")+ 
    ylab(expression(bar(EX)))+ 
    theme(
    panel.background=element_blank(), 
    panel.border = element_blank(), 
    panel.grid.minor.x=element_blank(), 
    panel.grid.major.x=element_blank(), 
    panel.grid.minor.y = element_line(colour = "#d9d9d9"), 
    panel.grid.major.y = element_line(colour = "#bfbfbf"), 
    axis.line = element_line() 
) 

# extract axis limits 
yminticks <- ggplot_build(p1)$panel$ranges[[1]]$y.minor_source 
# subtract first tick from second 
var1 <- yminticks[2] - yminticks[1] 

# and now add the annotate and plot 
p1 + 
    annotate("text", label=labEX, x=1.5, y=(mean(EXse2$EX[1:2])+var1)) 
関連する問題