从标题中假设这个向量和图:
plot(rnorm(200,5,2),type="l")
这将返回此图
我想知道的是,是否有办法让它的前半部分为蓝色col="blue"
,其余部分为红色"col="red"
。
类似的问题但在Matlab而不是R:Here
答案 0 :(得分:2)
你可以简单地在下半场使用线条:
dat <- rnorm(200, 5, 2)
plot(1:100, dat[1:100], col = "blue", type = "l", xlim = c(0, 200), ylim = c(min(dat), max(dat)))
lines(101:200, dat[101:200], col = "red")
答案 1 :(得分:2)
不是基础R解决方案,但我认为这是使用ggplot2绘制它的方法。有必要准备一个数据框来绘制数据。
set.seed(1234)
vec <- rnorm(200,5,2)
dat <- data.frame(Value = vec)
dat$Group <- as.character(rep(c(1, 2), each = 100))
dat$Index <- 1:200
library(ggplot2)
ggplot(dat, aes(x = Index, y = Value)) +
geom_line(aes(color = Group)) +
scale_color_manual(values = c("blue", "red")) +
theme_classic()
我们也可以使用具有相同数据框的lattice包。
library(lattice)
xyplot(Value ~ Index, data = dat, type = 'l', groups = Group, col = c("blue", "red"))
请注意,蓝线和红线已断开连接。不确定这是否重要,但如果你想绘制一条连续线,这里是ggplot2中的一种解决方法。我们的想法是对下半部分的数据框进行子集化,将整个数据框的颜色绘制为蓝色,然后将第二个数据框的颜色绘制为红色。
dat2 <- dat[dat$Index %in% 101:200, ]
ggplot(dat, aes(x = Index, y = Value)) +
geom_line(color = "blue") +
geom_line(data = dat2, aes(x = Index, y = Value), color = "red") +
theme_classic()