如何以与参考线本身相同的角度注释参考线?

Max*_*x C 10 r

我需要找到一种方法,以与参考线本身相同的角度注释参考线.

以下语句将生成参考线及其上方的标签.但是,线的斜率可能会发生变化,我需要找到一种方法来确保注释始终处于相同的角度.

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

在此输入图像描述

在R中有一个简单的方法吗?提前致谢

And*_*rie 14

一种方法是使用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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

设置不同的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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Ben*_*ker 9

@Andrie答案的附录:即使您没有手动设置par("asp"),也可以使用以下功能恢复当前的工作宽高比:

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

所以你可以创建你的情节:set asp <- getCurrentAspect(); 并继续@Andrie的其余解决方案.

据我所知,这个功能存在于R生态系统的某个地方,但我还没有看到它......


Mai*_*ura 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)
Run Code Online (Sandbox Code Playgroud)

斜率 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)
Run Code Online (Sandbox Code Playgroud)

带坡度 2