Давайте создадим несколько фиктивных данных для демонстрации:
sigma.ins.fr = sin((1:800)/20) + rnorm(800)
sigma.outs.fr = sin((801:1000)/20) + rnorm(200)
Теперь соберите все данные в одну последовательность
sigma.all = c(sigma.ins.fr, sigma.outs.fr)
И создайте вектор x, который просто считает вдоль данные. Это понадобится нам при вызове segments
ниже.
x = seq_along(sigma.all)
Теперь создайте вектор цветов для трассировки. Длина такой же, как у полных данных, с цветом для каждого сегмента.
cols = c(rep("tomato4", length(sigma.ins.fr)), rep("blue", length(sigma.outs.fr)))
Теперь создайте пустой холст для рисования данных.
plot(sigma.all, type="l", col=NA)
Наконец, мы можем построить данные. К сожалению, lines
не допускает отдельный цвет в разных сегментах. Таким образом, вместо этого мы можем использовать segments
segments(head(x,-1), head(sigma.all,-1), x[-1], sigma.all[-1], type="l", col=cols)
Или, если вы действительно предпочитаете использовать две отдельные трассы, объединяя lines
, тогда мы этого можно добиться, добавив координаты x к каждому вызову:
plot(sigma.all, type="l", col=NA)
lines(seq_along(sigma.ins.fr), sigma.ins.fr, col=c("tomato4"))
lines(seq_along(sigma.outs.fr) + length(sigma.ins.fr), sigma.outs.fr, col="tomato1")