Да, один из способов сделать это — использовать ggplot
.
ggplot
требует, чтобы ваши данные были в формате data.frame
. В этом data.frame
я добавляю столбец col
, который указывает желаемый цвет. Затем график строится с ggplot
, geom_line
и scale_colour_identity
, поскольку переменная col уже является цветом:
library(ggplot2)
df <- data.frame(
x = 1:100,
y = rnorm(100,1,100),
col = c(rep("red", 50), rep("black", 10), rep("red", 40))
)
ggplot(df, aes(x=x, y=y)) +
geom_line(aes(colour=col, group=1)) +
scale_colour_identity()
В более общем случае каждый сегмент линии может быть разного цвета. В следующем примере я сопоставляю цвет со значением x, получая график, который плавно меняет цвет с синего на красный:
df <- data.frame(
x = 1:100,
y = rnorm(100,1,100)
)
ggplot(df, aes(x=x, y=y)) + geom_line(aes(colour=x))
И если вы настаиваете на использовании базовой графики, то используйте segments
следующим образом:
df <- data.frame(
x = 1:100,
y = rnorm(100,1,100),
col = c(rep("red", 50), rep("black", 10), rep("red", 40))
)
plot(df$x, df$y, type="n")
for(i in 1:(length(df$x)-1)){
segments(df$x[i], df$y[i], df$x[i+1], df$y[i+1], col=df$col[i])
}
person
Andrie
schedule
12.10.2011