Создайте пользовательскую функцию 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
. Например, я использую 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)
}
![введите здесь описание изображения](https://i.stack.imgur.com/y4w94.png)
person
Darren Tsai
schedule
15.12.2018
col = 1:3
не имеет смысла, потому что в каждом цикле рисуется только одна стрелка. - person Darren Tsai   schedule 16.12.2018