Создайте пользовательскую функцию 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()
otherкроме этого у него есть еще один новый аргумент cut
.
Примечание 3: Если вы хотите, чтобы за стрелками были полные строки, просто удалите хэш (#
) в функции.
Постройте и попробуйте другое значение cut
.Например, я использую 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)
}
