基準線自体と同じ角度で基準線に注釈を付ける方法を見つける必要があります。
次のステートメントは、基準線とその上のラベルを生成します。ただし、線の傾きが変わる可能性があるため、注釈が常に同じ角度になるようにする方法を見つける必要があります。
plot(1:10,1:10)
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=-28)
Rでそれを行う簡単な方法はありますか? 前もって感謝します
基準線自体と同じ角度で基準線に注釈を付ける方法を見つける必要があります。
次のステートメントは、基準線とその上のラベルを生成します。ただし、線の傾きが変わる可能性があるため、注釈が常に同じ角度になるようにする方法を見つける必要があります。
plot(1:10,1:10)
abline(a=8, b=-1)
text(x=4, y=5, "reference line label", srt=-28)
Rでそれを行う簡単な方法はありますか? 前もって感謝します
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))
@Andrieの回答の補遺:相対座標スケールを取得するために最初にプロットでアスペクト比をハードコーディングする代わりに、次の関数を使用して現在の作業アスペクト比を復元できます。
getCurrentAspect <- function() {
uy <- diff(grconvertY(1:2,"user","inches"))
ux <- diff(grconvertX(1:2,"user","inches"))
uy/ux
}
したがって、プロットを作成できます。set asp <- getCurrentAspect()
; @Andrieのソリューションの残りの部分に進みます。
私はこの機能がRエコシステムのどこかに存在することを知っていますが、私はそれを見たことがありません...
同様のソリューション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)
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)