15

基準線自体と同じ角度で基準線に注釈を付ける方法を見つける必要があります。

次のステートメントは、基準線とその上のラベルを生成します。ただし、線の傾きが変わる可能性があるため、注釈が常に同じ角度になるようにする方法を見つける必要があります。

plot(1:10,1:10) 
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=-28)

ここに画像の説明を入力

Rでそれを行う簡単な方法はありますか? 前もって感謝します

4

4 に答える 4

15

1 つの方法は、asp引数を使用してプロットの縦横比を設定し、指定された を使用して角度を計算することaspです。

asp <- 2

plot(1:10,1:10, asp=asp) 
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=180/pi*atan(-1*asp))

abline(a=4, b=-2)
text(x=1, y=3, "reference line label", srt=180/pi*atan(-2*asp))

ここに画像の説明を入力

別の設定asp

asp <- 0.8

plot(1:10,1:10, asp=asp) 
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=180/pi*atan(-1*asp))

abline(a=4, b=-2)
text(x=1, y=3, "reference line label", srt=180/pi*atan(-2*asp))

ここに画像の説明を入力

于 2012-08-01T21:20:31.603 に答える
12

@Andrieの回答の補遺:相対座標スケールを取得するために最初にプロットでアスペクト比をハードコーディングする代わりに、次の関数を使用して現在の作業アスペクト比を復元できます。

getCurrentAspect <- function() {
   uy <- diff(grconvertY(1:2,"user","inches"))
   ux <- diff(grconvertX(1:2,"user","inches"))
   uy/ux
}

したがって、プロットを作成できます。set asp <- getCurrentAspect(); @Andrieのソリューションの残りの部分に進みます。

私はこの機能がRエコシステムのどこかに存在することを知っていますが、私はそれを見たことがありません...

于 2012-08-01T21:27:05.947 に答える
5

同様のソリューションggplot2

data <- data.frame(x = 1:10, y = 1:10)
intercept <- 10
slope <- -1
ggplot(data, aes(x,y)) + geom_point(shape=1) +  
  geom_abline(intercept = intercept, slope = slope) + 
  geom_text(x=4, y=5, label="my label", angle=atan(slope)*180/pi)

スロープ付き 1

intercept <- 10
slope <- -2
ggplot(data, aes(x,y)) + geom_point(shape=1) +  
  geom_abline(intercept = intercept, slope = slope) + 
  geom_text(x=4, y=5, label="my label", angle=atan(slope)*180/pi)

スロープ付 2

于 2012-08-01T21:22:25.947 に答える