gpt4 book ai didi

r - 将箭头放在 R 中线的中间

转载 作者:行者123 更新时间:2023-12-04 23:12:28 24 4
gpt4 key购买 nike

我有一个情节,我在其中绘制从点到点的箭头。我想把这个箭头不是放在行尾,而是放在中间。除了在相应行的一半长度上放置额外的箭头之外,还有其他简单的方法吗?
我的代码是这样的:

plot(x, y, xlim=range(x), ylim=range(y), xlab="x", ylab="y", pch=16,
main="Filled Plane")

for(i in 1:20){
arrows(x[i], y[i], x[i+1], y[i+1], length = 0.25, angle = 30, col = i)
}

最佳答案

自定义函数 myArrow()并添加一个新参数 cut控制箭头的比例

myArrow <- function(x0, y0, x1, y1, cut = 1, ...){
x.new <- (1 - cut) * x0 + cut * x1
y.new <- (1 - cut) * y0 + cut * y1
# segments(x0, y0, x1, y1, ...)
arrows(x0, y0, x.new, y.new, ...)
}

注1: x.new的计算和 y.new在这个自定义函数中使用了一个简单的数学概念,即 截面公式 . cut的值必须是 0 到 1 之间 .

注2:该函数的使用等同于原函数 arrows()的使用除此之外,它还有一个新参数 cut .

注3:如果您想要箭头后面的完整行,只需删除函数中的哈希( # )。

绘制并尝试不同的 cut值(value)。例如,我使用 cut = 0.7 . (如果您希望箭头位于中间,请使用 cut = 0.5 。)
# Toy Data
x <- seq(1, 5.5, by = 0.5)
y <- rep(c(1, 5), 5)

plot(x, y, pch = 16)
for(i in 1:9){
myArrow(x[i], y[i], x[i+1], y[i+1], cut = 0.7, col = i, lwd = 2)
}

enter image description here

关于r - 将箭头放在 R 中线的中间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com