以指定角度绘制线

时间:2018-06-22 01:30:41

标签: r

我正在尝试在有圆圈覆盖的绘图上绘制线条,将圆圈分为12个部分。该图具有指向特定点的箭头。我有一个情节和一个圆圈,但不知道如何获得线条。这是我尝试过的:

library(MASS)
eqscplot(basic.df$Valence, basic.df$Activation, xlim=c(-2,2), ylim=c(-2,2), xlab = "Valence", ylab = "Activation", main = "Affective Content of Pseuke d'Zimra (Basic ANEW)", axes=FALSE, frame.plot = FALSE)
axis(1, pos=0)
axis(2, pos=0)
arrows(0,0,x1=basic.df$Valence, y1 = basic.df$Activation)
symbols(0,0,2, add = TRUE, inches = FALSE, asp = 1)
circumplex.angles <- c(30, 60, 120, 150, 210, 240, 300, 330)
for (i in 1:8) {
   i == 1  
   abline(a=0, b=tan(circumplex.angles[i]))
  }

如果您想完全复制我正在做的事情,请提供绘图代码。 (basic.df $ Valence在0和2之间具有35个值,而basic.df $ Activation在0和-2之间具有35个相关值)。

但是,关键代码是for循环。我正在以看似随意的角度获得线条。 (我想给你看一张图片,但是我无法连接到服务器以便我的网站上传图片。如果连接成功,将进行编辑。)

谢谢。

3 个答案:

答案 0 :(得分:1)

tan函数的

角度以弧度为单位。您可以使用

abline(a=0, b=tan(circumplex.angles[i]*pi/180))

pi是R中的内置常量

答案 1 :(得分:1)

这是一个更通用的解决方案和一个示例图像。

angles <- c(0, 45, 90, 180, 270) # in degrees
x0 <- 4
y0 <- 4
lineLength <- 2

plot(x0, y0, xlim=c(1, 8), ylim=c(1, 8), pch=15, cex=3)

for (i in 1:length(angles)) {
    x1 <- x0 + lineLength * cos(angles[i] * pi / 180)
    y1 <- y0 + lineLength * sin(angles[i] * pi / 180)
    
    segments(x0, y0, x1, y1, lwd=i)
    
    
    x1 <- x0 + (lineLength * 1.3) * cos(angles[i] * pi / 180)
    y1 <- y0 + (lineLength * 1.3) * sin(angles[i] * pi / 180)

    text(x1, y1, labels=angles[i])
    
}

enter image description here

答案 2 :(得分:0)

这正是我想要做的工作:

for (i in 1:8) {
  i == 1
  segments(0,0, x1 = 2*cos(circumplex.angles[i]*pi/180), 
                y1 = 2*sin(circumplex.angles[i]*pi/180))
}
相关问题